ホームページ >バックエンド開発 >PHPチュートリアル >PHP の一般的なセキュリティ問題と解決策

PHP の一般的なセキュリティ問題と解決策

王林
王林オリジナル
2019-11-08 17:44:421983ブラウズ

PHP の一般的なセキュリティ問題と解決策

1. SQL インジェクション

SQL インジェクションは、Web サイトに対する最大の脅威の 1 つです。データベースが他人の SQL Injection によってインジェクションされた場合、攻撃が発生すると、他人があなたのデータベースを転送する可能性があり、より深刻な結果を招く可能性があります。

解決策:

主流のソリューションは 2 つあります。ユーザーが入力したデータをエスケープするか、カプセル化されたステートメントを使用します。エスケープする方法は、ユーザーが送信したデータをフィルタリングし、有害なタグを削除する関数をカプセル化することです。ただし、この方法はどこでも忘れやすいため、お勧めしません。

次に、PDO を使用してカプセル化されたステートメントを実行する方法を紹介します (mysqi にも同じことが当てはまります):

$username = $_GET['username'];
 
$query = $pdo->prepare('SELECT * FROM users WHERE username = :username');
 
$query->execute(['username' => $username]);
 
$data = $query->fetch();

2、XSS

XSS は、CSS (Cross Site Script)、クロスサイト スクリプティング攻撃とも呼ばれます。悪意のある攻撃者が Web ページに悪意のある HTML コードを挿入することを指し、ユーザーがそのページを閲覧すると、Web に埋め込まれた HTML コードが実行され、ユーザーに対する悪意のある攻撃という特別な目的が達成されます。

解決策:

ユーザーからの入力を信頼せず、入力内のすべての特殊文字をフィルターで除外します。これにより、ほとんどの XSS 攻撃が排除されます:

<?php
 
$searchQuery = htmlentities($searchQuery, ENT_QUOTES);

または、テンプレート エンジン Twig を使用できます。一般的なテンプレート エンジンは、デフォルトで htmlentities を出力に追加します。

3. いくつかの操作を実行します。

解決策:

最も一般的な防御方法は、CSRF トークンで暗号化された安全な文字列 (一般にトークンと呼ばれます) を生成し、そのトークンを Cookie またはセッションに保存することです。

Web ページ上でフォームを構築するたびに、フォームの非表示フィールドにトークンを入力します。その後、フォーム要求サーバーはユーザーの Cookie またはセッション内のトークンに基づいてトークンを比較し、検証は成功するのでパスを与えます。

攻撃者はトークンの内容を知ることができないため(各形式のトークンはランダムです)、ユーザーになりすますことはできません。

推奨チュートリアル:

PHP ビデオ チュートリアル

以上がPHP の一般的なセキュリティ問題と解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。