あらゆる種類の操作を行っている限り、一部の友人が Web サイト自体の脆弱性を利用して Web サイトを操作することを基本的に防ぐことができます。XSS などの脆弱性の多くは htmlentities() を使用して XSS を防ぎます。 SQL インジェクションは mysql_real_escape_string を使用して実行できます。
PHP には他のネットワーク プログラミング言語のセキュリティが含まれており、それは特にローカル セキュリティとリモート セキュリティの 2 つの側面に反映されます。ここでは、PHP プログラム自体の安全性を確保するために次の習慣を身に付ける必要があります。
1. PHP コードのセキュリティを確保するために、ユーザーが入力したデータを検証します
ここでの 1 つのトリックは、いわゆるホワイト リストを使用することです。つまり、ユーザーのデータが次のようになっている必要がある場合、その値が数値であるかどうかを確認するだけで済みます。は数字です。それが何であるかを確認してください。実際には悪意のあるスクリプトである可能性があります。
この検証はクライアント側 JavaScript でのみ実行することはできません。Battlefield は、JS は検証ツールとしてではなく、訪問ユーザーのエクスペリエンスを向上させるためにのみ作成されていると考えています。なぜなら、訪問ユーザーが誤ってクライアント スクリプトの実行を無効にして、この検証層をスキップする可能性があるからです。したがって、このデータを PHP サーバー側プログラムで検証する必要があります。
2. データベースのセキュリティを保護します - データベース上で実行される SQL ステートメントに対してセキュリティ前処理を実行します。
mysql_real_escape_string 操作は、実行前に Mysql ステートメントに対して常に実行する必要があります。この関数の使用法については、PHP マニュアルを参照してください。 ADODB などの多くの PHP データベース抽象化レイヤーは、同様のメソッドを提供します。
3. 依存すべきではない PHP 設定に依存しないでください – 環境は信頼できない場合があります
magic_quotes_gpc=On には依存しません。プログラミングプロセス中は、いつでもこの設定オプションをオフにして、このオプションを判断してからユーザーが入力したデータを処理するようにしてください。覚えておいてください - このオプションは PHP v6 では削除される予定です。必要に応じて addcslashes 一連の関数を使用してみてください - マニュアルを参照してください
4. リモートフォーム送信を回避するためにデータソースを確認します
データのソース アドレスを確認するためにスーパー変数 $_SERVER['HTTP_REFERER'] を使用しないでください。可能であれば、非常に若いハッカーがツールを使用してこの変数のデータを生成します。ソースを検証するときは、トークンが一致することを確認します。
5. セッションデータ、特に Cookie を保護します
Cookie は保存された後、何らかの理由で変更される可能性があります。機密データは暗号化する必要があります。 MD5 と sha1 はどちらも優れた暗号化方式です。
6. htmlentities() を使用して XSS 攻撃を防止します
ユーザーがスクリプト言語を入力する可能性があるデータに対して htmlentities() 操作を実行し、プログラム エラーの原因となるユーザー入力のほとんどを具体化します。習慣 #1: Web アプリケーションへの名前、電子メール アドレス、電話番号、請求先情報の入力において、入力データをホワイトリストの値で検証することを忘れないでください。