この記事では、主に PHP の文字セキュリティ フィルタリング関数を簡単に紹介します。SQL インジェクション攻撃や XSS 攻撃を防ぐのに非常に役立ちます。
WEB 開発プロセスでは、世界中のユーザーが入力したデータを取得する必要があることがよくあります。ただし、「ユーザーが入力したデータは決して信頼できません」。そのため、さまざまな Web 開発言語では、ユーザー入力データのセキュリティを確保するための関数が提供されています。 PHP には、SQL インジェクション攻撃や XSS 攻撃などの問題を防ぐのに役立つ非常に便利な関数がいくつかあります。
1.mysql_real_escape_string()
この関数は、かつては PHP での SQL インジェクション攻撃を防ぐのに非常に役立ち、一重引用符や二重引用符などの特殊文字に「バックスラッシュ」を追加して、ユーザーの入力がクエリに使用されることを保証していました。ただし、この機能はデータベースに接続しているときに使用することに注意してください。
しかし現在では、mysql_real_escape_string() 関数は基本的に必要なくなりました。つまり、新しいアプリケーション開発では、データベースを操作するために PDO などのライブラリを使用する必要があります。つまり、既製のステートメントを使用して SQL インジェクション攻撃を防ぐことができます。
2.スラッシュを追加します
この関数は上記の mysql_real_escape_string() とよく似ていますが、特殊文字にバックスラッシュを追加しますが、設定ファイル php.ini の magic_quotes_gpc の値が「on」の場合はこの関数を使用しないように注意してください。 magic_quotes_gpc = on の場合、すべての GET、POST、COOKIE データに対して addslashes() が自動的に実行されます。 magic_quotes_gpc によってエスケープされた文字列に対して addslashes() を使用しないでください。二重エスケープが発生するためです。この変数の値は、PHP の get_magic_quotes_gpc() 関数を通じて確認できます。
3.htmlentities()
この関数はユーザー入力データをフィルタリングするのに非常に便利で、文字を HTML エンティティに変換できます。たとえば、ユーザーが文字「<」を入力すると、この関数によって HTML エンティティ「<」に変換されます (ソース コードを表示すると「<」が表示されます)。これにより、XSS および SQL インジェクションが防止されます。認識できない文字セットは無視され、ISO-8859-1 に置き換えられます
4.htmlspecialchars()
この関数は上記と非常によく似ています。HTML の一部の文字には特別な意味があり、そのような意味を反映するには、それらを HTML エンティティに変換する必要があります。
5. ストリップタグ()
この関数は、文字列からすべての HTML、JavaScript、および PHP タグを削除できます。もちろん、関数の 2 番目のパラメーターを設定することで、一部の特定のタグのフィルタリングを無視することもできます。
6. 間隔()
intval は実際にはフィルタリング関数ではなく、その機能は変数を整数型に変換することです。これは、整数パラメーターを取得する必要がある場合、特に ID や年齢などの整数データを解析する場合に、この関数を使用して PHP コードをより安全にすることができます。
これらは PHP に組み込まれている文字列フィルタリング関数であり、非常にシンプルで実用的です。友達が上手に活用できることを願っています。