PHP は、Web 開発で広く使用されているプログラミング言語です。 PHP は広く使用されているため、PHP 開発プロセスではセキュリティの問題が避けられない問題となっています。この記事では、PHP 開発中に一般的に使用されるセキュリティ対策を検討します。
入力検証は、PHP 開発中の重要なセキュリティ対策です。入力検証とは、ユーザーが指定したデータが特定のルールに準拠しているかどうかをチェックすることを指します。開発者は、ユーザーが送信したデータを受け取る前に、データ検証を実行して、ユーザーが提供したデータが合法的で安全であることを確認する必要があります。
たとえば、ログイン フォームでは、開発者はユーザー名とパスワードの入力検証を実行する必要があります。ユーザー名には文字と数字のみを含め、長さは 3 ~ 20 文字にする必要があります。パスワードには少なくとも 1 つの数字、1 つの大文字、1 つの小文字を含める必要があり、長さは 8 ~ 20 文字にする必要があります。入力検証は、悪意のあるユーザーが悪意のあるデータを送信するのを防ぐのに役立ちます。
SQL インジェクション攻撃は、ネットワーク攻撃の一般的な形式であり、入力ボックスに SQL コードを入力すると、データベースに不正にアクセスできるようになります。アクセス許可。たとえば、攻撃者はクエリ フォームに次の SQL コードを入力できます:
SELECT * FROM users WHERE username = 'admin' OR 1=1;
このクエリはすべてのユーザーのレコードを返します。管理者の記録だけでなく、ユーザーも対象となります。 SQL インジェクション攻撃を防ぐには、開発者はパラメータ化されたクエリとプリペアド ステートメントを使用する必要があります。これらのメソッドを使用すると、開発者は、ユーザーが入力した値をクエリ ステートメントに埋め込むのではなく、入力値をパラメータとしてクエリ ステートメントに渡すことができます。
次に、プリペアド ステートメントを使用して SQL インジェクション攻撃を防ぐ例を示します。
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = ?');
$stmt->execute([$username]);
クロスサイト スクリプティング攻撃 (XSS)ネットワーク攻撃の一般的な方法は、攻撃者が Web ページに悪意のあるスクリプトを挿入してユーザーの機密情報を取得することです。たとえば、攻撃者は次の Javascript コードをコメント フォームに挿入する可能性があります: