-
フォームのデータ検証: ユーザーからのフォーム入力は信頼できないため、必ず検証する必要があります。以下は、入力値のバリデーションを行う例です。
<?php $name = $_POST['name']; if (empty($name)) { echo "名前を入力してください。"; } else { // 名前には有効な文字のみを含める if (!preg_match("/^[a-zA-Z ]*$/", $name)) { echo "名前には英字とスペースのみを使用してください。"; } } ?>
-
SQLインジェクション対策: ユーザーからの入力を直接SQLクエリに組み込むと、悪意のあるユーザーによってデータベースが改ざんされる可能性があります。入力をエスケープするか、プリペアドステートメントを使用することで、SQLインジェクション攻撃を防ぐことができます。
<?php $username = $_POST['username']; $password = $_POST['password']; // エスケープする場合 $username = mysqli_real_escape_string($conn, $username); $password = mysqli_real_escape_string($conn, $password); // プリペアドステートメントを使用する場合 $stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND password = ?"); $stmt->bind_param("ss", $username, $password); $stmt->execute(); ?>
-
ファイルのアップロードの検証: ファイルのアップロード機能を実装する場合、ファイルの種類やサイズ、アップロード先のディレクトリなどを検証する必要があります。以下は、ファイルの拡張子を検証する例です。
<?php $file = $_FILES['file']; $allowed_extensions = ['jpg', 'png', 'gif']; $file_extension = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)); if (!in_array($file_extension, $allowed_extensions)) { echo "無効なファイル形式です。許可されている形式は: " . implode(', ', $allowed_extensions); } ?>
入力検証は、セキュリティの観点から重要な一環です。上記の例を参考に、PHPプログラムでの入力検証を適切に実装し、安全なアプリケーションの開発に役立ててください。