現代のインターネットでは、世界中のユーザーから入力データを取得する必要があることがよくあります。ただし、「ユーザーが入力したデータを決して信頼してはいけない」ことは誰もが知っています。そのため、さまざまな Web 開発言語では、ユーザー入力データのセキュリティを確保するための関数が提供されています。 PHP には、Web サイトで SQL インジェクション攻撃や XSS 攻撃などの問題を防ぐのに役立つ、非常に便利な関数がいくつかあります。もちろん、PHP コードを記述する場合、PhpStorm や Zend Studio などの IDE は、開発者が確実に使用できるように関数を強調表示します。また、これらの関数やコードを保護するためにコード難読化ツールを使用する人もいます (Zend Guard など)。これは、PHP 関数の使用と安全性を確保するために使用されます。今日は主に、これらの関数がどのように定義され、機能するかを見ていきます。
1.mysql_real_escape_string()
この関数は、PHP での SQL インジェクション攻撃を防ぐのに非常に役立ちます。一重引用符や二重引用符などの特殊文字に「バックスラッシュ」を追加して、Yes のクエリに使用する前にユーザーの入力が安全であることを確認します。ただし、この機能はデータベースに接続しているときに使用することに注意してください。
しかし現在、mysql_real_escape_string() 関数は基本的に必要なくなりました。すべての新しいアプリケーション開発では、データベースを操作するために PDO などのライブラリを使用する必要があります。つまり、既製のステートメントを使用して SQL インジェクション攻撃を防ぐことができます。
2. まつげを追加します
この関数は上記の mysql_real_escape_string() と非常に似ています。ただし、設定ファイルphp.iniのmagic_quotes_gpcの値が「on」の場合は、この機能を使用しないように注意してください。デフォルトでは、magic_quotes_gpc はオンになっており、すべての GET、POST、COOKIE データに対して addlashes() が自動的に実行されます。二重エスケープが発生するため、magic_quotes_gpc によってエスケープされた文字列に対して addslashes() を使用しないでください。この変数の値は、PHP の get_magic_quotes_gpc() 関数を通じて確認できます。
3.htmlentities()
この関数は、ユーザー入力データをフィルタリングするのに非常に便利で、文字を HTML エンティティに変換できます。たとえば、ユーザーが文字「
4.htmlspecialchars()
HTML の一部の文字には特別な意味があります。そのような意味を反映したい場合、この関数は変換された文字列を返します。たとえば、「&」amp は「&」に変換されます。
5.strip_tags()
この関数は、文字列からすべての HTML、JavaScript、および PHP タグを削除できます。もちろん、関数の 2 番目のパラメーターを設定することで、いくつかの特定のタグを表示することもできます。
6.md5()
一部の開発者は非常に単純なパスワードを保存していますが、これはセキュリティの観点からは良くありません。md5() 関数は指定された文字列の 32 文字の md5 ハッシュを生成する可能性があり、プロセスは元に戻せません。つまり、md5 の結果から開始することはできません。 () は元の文字列です。
7.sha1()
この関数は上記の md5() に似ていますが、異なるアルゴリズムを使用し、40 文字の SHA-1 ハッシュを生成します (md5 は 32 文字のハッシュを生成します)。
8.intval()
笑わないでください。これが安全関連の関数ではなく、変数を整数型に変換していることはわかっています。ただし、この関数を使用すると、特に ID や年齢などのデータを解析する場合に、PHP コードの安全性を高めることができます。