現代のインターネットでは、世界中のユーザーから入力データを取得する必要があることがよくあります。ただし、「ユーザーが入力したデータを決して信頼してはいけない」ことは誰もが知っています。そのため、さまざまな Web 開発言語では、ユーザー入力データのセキュリティを確保するための関数が提供されています。 PHP には、Web サイトで SQL インジェクション攻撃や XSS 攻撃などの問題を防ぐのに役立つ、非常に便利な関数がいくつかあります。もちろん、PHP コードを作成するとき、IDE (PhpStorm や Zend Studio など) は開発者が確実に使用できるように関数を強調表示しますが、これらの関数やコードを保護するためにコード難読化ツール (Zend Guard など) を使用する人もいます。 PHP 関数の使用と安全性を確保するために使用されます。今日は主に、これらの関数がどのように定義され、機能するかを見ていきます。
1. mysql_real_escape_string()
この関数は、一重引用符や二重引用符などの特殊文字に「バックスラッシュ」を追加するのに非常に役立ちます。クエリに安全に使用できます。ただし、この機能はデータベースに接続しているときに使用することに注意してください。
しかし現在、mysql_real_escape_string() 関数は基本的に必要なくなりました。すべての新しいアプリケーション開発では、データベースを操作するために PDO などのライブラリを使用する必要があります。つまり、既製のステートメントを使用して SQL インジェクション攻撃を防ぐことができます。
2.addslashes()
この関数は上記の 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 エンティティ < に変換されるため、XSS および SQL インジェクション攻撃が防止されます。
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 コードの安全性を高めることができます。