PHP でよく使用されるセキュリティ フィルタリング関数のコレクション、PHP 関数のコレクション_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:17:32
オリジナル
732 人が閲覧しました

PHPで一般的に使用されるセキュリティフィルタリング関数のコレクション、PHP関数のコレクション

さまざまな開発フレームワークが優れたセキュリティ手法を提供していますが、それでもセキュリティの問題に注意を払う必要があります。
理由は簡単です。多くの小規模な機能やプロジェクトではフレームワークが使用されておらず、セキュリティの問題を自分たちで解決する必要があるからです。

①よく使われるセキュリティ機能とは:

コードをコピーします コードは次のとおりです:

mysql_real_escape_string()
追加スラッシュ()

②これらの機能の役割:

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 スクリプトはデータを安全に転送できます。

コードをコピーします コードは次のとおりです:

If(!get_magic_quotes_gpc()) {
foreach($_GET as $key=> &$value) {
$value = mysql_real_escape_string($value);
}
}
If(!get_magic_quotes_runtime()) {
$sourceDataRecord= file('./sourceData.txt');
if($sourceDataRecord) {
foreach($sourceDataRecord as $sourceKey => &$sourceValue) {
$sourceValue = mysql_real_escape_string($sourceValue);
}
}
}
$gpcData = implode("t", $_GET);
$runtimeData = implode("t", $sourceDataRecord);
echo $gpcData、$runtimeData;
?>

sourceData.txtの内容は次のとおりです:

コードをコピーします コードは次のとおりです:

「また日曜日の午後です
」 回ってます……回ってます

getData.phpをリクエストする際のURLは以下の通りです

php.test.com/safe/getdata.php?name=maw'eibin&age=25

実行結果は以下の通りです:

コードをコピーします コードは次のとおりです:

maw'eibin 25" また日曜日の午後ですよ、走ってます
回って……回って」

⑤参考:

http://www.bkjia.com/article/35868.htm

PHP のセキュリティ フィルタリング機能では、一部の文字が置き換えられることがよくありますが、ユーザーが入力した情報が変更されると問題が発生するのではないかと思います。解決策

おっしゃるとおり、セキュリティフィルタリングはセキュリティのためにユーザーの行動を制限するために必要ですが、この制限はどのようなユーザーを対象としていると思いますか? Web サイトのセキュリティを意図的に侵害するユーザーです。いくつかの例を挙げると:
タイトル内の HTML タグをフィルタリングします。タイトルは通常プレーン テキストであるため、1. HTML タグはレイアウトを混乱させます。2. 危険なスクリプトが含まれます。3. HTML エンティティに引用符などの文字をエンコードしても、最終的な表示効果には影響しません。
テキスト タグ内の

人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート