PHP データ フィルタリング: XSS および CSRF 攻撃の防止
インターネットの発展に伴い、ネットワーク セキュリティが注目の焦点の 1 つになりました。 Web サイト開発では、特に XSS (クロスサイト スクリプティング攻撃) や CSRF (クロスサイト リクエスト フォージェリ攻撃) 攻撃を防ぐために、ユーザーが送信したデータをフィルターして検証することが非常に重要です。この記事では、PHP を使用してこれら 2 つの一般的なセキュリティ脆弱性を防ぐ方法を紹介し、参考用のサンプル コードをいくつか提供します。
XSS 攻撃とは、悪意のある攻撃者が悪意のあるスクリプトやコードを挿入して Web ページのコンテンツを改ざんし、ユーザーの機密情報を盗んだり、マルウェアを拡散したりすることを指します。 XSS 攻撃を防ぐには、ユーザーが入力したデータをフィルタリングしてエスケープする必要があります。
(1) htmlspecialchars() 関数を使用して、HTML 特殊文字をエスケープします。
$name = $_POST['name']; $filtered_name = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
(2) 正規表現を使用してユーザー入力をフィルタリングします。
$name = $_POST['name']; $pattern = '/^[a-zA-Z0-9]+$/'; if (preg_match($pattern, $name)) { // 用户输入合法 } else { // 用户输入不合法 }
CSRF 攻撃とは、ユーザー情報の変更、悪意のある転送の開始など、ユーザー要求を偽造することによって不正な操作を実行する攻撃者を指します。 CSRF 攻撃を防ぐには、次のような対策を講じることができます。
(1) CSRF トークン検証を使用します。
session_start(); $csrf_token = bin2hex(random_bytes(32)); // 生成随机的令牌 $_SESSION['csrf_token'] = $csrf_token; // 在表单中添加令牌 echo "<input type='hidden' name='csrf_token' value='{$csrf_token}'>"; // 验证令牌 if ($_POST['csrf_token'] === $_SESSION['csrf_token']) { // 令牌验证通过 } else { // 令牌验证失败 }
(2) リクエスト元を限定します。
if ($_SERVER['HTTP_REFERER'] !== 'http://www.example.com') { // 请求来源不合法 } else { // 请求来源合法 }
要約すると、ユーザーが送信したデータのフィルタリングと検証は、Web サイトのセキュリティを確保するための重要なステップです。 HTML 特殊文字をエスケープし、正規表現を使用してユーザー入力をフィルタリングし、CSRF トークン検証を使用してリクエスト ソースを制限することにより、XSS および CSRF 攻撃を効果的に防ぐことができます。ただし、セキュリティは継続的なプロセスであり、Web サイトのセキュリティを向上させるためにセキュリティ対策を継続的に更新および強化する必要があります。
参考資料:
以上がPHP データ フィルタリング: XSS および CSRF 攻撃の防止の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。