さまざまな開発フレームワークが優れたセキュリティ手法を提供していますが、それでもセキュリティの問題に注意を払う必要があります。
理由は簡単です。多くの小規模な機能やプロジェクトではフレームワークが使用されておらず、セキュリティの問題を自分たちで解決する必要があるからです。
①よく使われるセキュリティ機能とは:
②これらの機能の役割:
Mysql_real_escape_string() 関数とaddslashes() 関数は両方とも、データ内の単一引用符と二重引用符をエスケープします。それは SQL インジェクションを防ぐためです。
ただし、mysql_real_escape_string() は文字セットを考慮しており、より安全です。
関連情報を調べた後、次の結論を導き出すことができます。現在の文字セットがシングルバイトの場合、これら 2 つの関数は同じ効果を持ち、両方ともエスケープ フィルタリングの役割を果たすことができます。しかし、誰がシングルバイトを使用するでしょうか?特にutf8はますます広く使われるようになってきています。
③機能の使い方:
mysql_real_escape_string() と addslashes() の 2 つの関数の使用法を理解するには、まず他の 2 つの関数の意味を理解する必要があります。
get_magic_quotes_gpc() と get_magic_quotes_runtime()、2 つの関数の類似点と相違点を比較してみましょう:
同じ:
a. どちらも php.ini 設定ファイルの設定を取得するために使用されます。オンの場合は 1 を返し、オフの場合は 0 を返します。
b. オンにすると、指定された範囲内のデータがエスケープされ、フィルターされます。
異なる:
a. 2 つのアクションの範囲は異なります:
magic_quotes_gpc は主に Web クライアント上で機能します。簡単に言えば、主に $_GET、$_POST、$_COOKE のデータをフィルタリングします。
magic_quotes_runtime は主に、ファイルから読み取られたデータ、またはデータベース クエリから取得されたデータをフィルタリングします。
b. 異なる設定時間:
magic_quotes_gpc は実行時に設定できません [この設定はサーバーの再起動時にのみ読み取ることができます]
magic_quotes_runtime は実行時に設定できます。
注: いわゆるランタイム設定とは、ini_set() 関数を通じてスクリプト内の php.ini ファイルに構成を設定できることを意味します。
get_magic_quotes_gpc() と get_magic_quotes_runtime() の 2 つの関数を理解した後、php.ini 設定ファイルで magic_quotes_runtime と magic_quotes_gpc が有効になっていることが検出されると、指定された範囲内のデータが自動的に転送されることを理解する必要があります。オフになっている場合は、mysql_real_escape_string()[またはフィルタリング用のlashes関数を追加]を使用する必要があります
④例:
1. magic_quotes_gpc と magic_quotes_runctime がオンかオフかに関係なく、getdata.php スクリプトはデータを安全に転送できます。
sourceData.txtの内容は次のとおりです:
getData.phpをリクエストする際のURLは以下の通りです
php.test.com/safe/getdata.php?name=maw'eibin&age=25
実行結果は以下の通りです:
⑤参考:
http://www.bkjia.com/article/35868.htm
おっしゃるとおり、セキュリティフィルタリングはセキュリティのためにユーザーの行動を制限するために必要ですが、この制限はどのようなユーザーを対象としていると思いますか? Web サイトのセキュリティを意図的に侵害するユーザーです。いくつかの例を挙げると:
タイトル内の HTML タグをフィルタリングします。タイトルは通常プレーン テキストであるため、1. HTML タグはレイアウトを混乱させます。2. 危険なスクリプトが含まれます。3. HTML エンティティに引用符などの文字をエンコードしても、最終的な表示効果には影響しません。
テキスト タグ内の