ホームページ  >  記事  >  バックエンド開発  >  php.ini magic_quotes_gpc 設定のアンチインジェクション方法 (1/5)_PHP チュートリアル

php.ini magic_quotes_gpc 設定のアンチインジェクション方法 (1/5)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:09:331251ブラウズ

phptutorial.ini magic_quotes_gpc設定のアンチインジェクションメソッド

1. PHP 設定ファイル php.ini の magic_quotes_gpc オプションがオンになっておらず、オフに設定されています
2. 開発者はデータ型をチェックしてエスケープしませんでした
しかし実際には、2 番目の点が最も重要です。ユーザーが入力したデータ型をチェックし、正しいデータ型を mysql チュートリアルに送信することは、Web プログラマーの最も基本的な資質であるべきだと思います。しかし実際には、多くの初心者 Web 開発者はこれを忘れて、バックドアが大きく開いたままになっていることがよくあります。
2 番目の点が最も重要なのはなぜですか? 2 番目の保証がないと、magic_quotes_gpc オプションがオンかオフかに関係なく、SQL インジェクション攻撃を引き起こす可能性があるためです。技術的な実装を見てみましょう:
1. magic_quotes_gpc = off の場合のインジェクション攻撃
Magic_quotes_gpc = off は、php の非常に安全でないオプションです。 php の新しいバージョンでは、デフォルト値が on に変更されました。しかし、オプションがオフになっているサーバーがまだかなりの数あります。結局のところ、サーバーがどんなに古いものであっても、まだそれを使用している人がいます。
magic_quotes_gpc = on の場合、送信された変数のすべての '(一重引用符)、"(二重数字)、(バックスラッシュ)、および空白文字が前に自動的に追加されます。 以下は PHP の正式バージョンの説明です:

コードをコピーします。コードは次のとおりです:
magic_quotes_gpc ブール値

gpc (get/post/cookie) 操作の magic_quotes 状態を設定します。magic_quotes がオンの場合、すべての ' (一重引用符)、" (二重引用符)、(バックスラッシュ)、および null はバックスラッシュで自動的にエスケープされます。

逃げ場がない場合、つまりオフの場合、攻撃者はそれを利用する機会があります。次のテスト スクリプトを例として取り上げます:

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

if ( isset($_post["f_login"] ) )
{
// データベースへの接続に関するチュートリアル...
//...コードは省略されています...

// ユーザーが存在するかどうかを確認します

$t_struname = $_post["f_uname"]; $t_strpwd = $_post["f_pwd"]; $t_strsql = "select * from tbl_users where username='$t_struname'、password = '$t_strpwd' 制限 0,1";

if ( $t_hres = mysql_query($t_strsql) )
{

// クエリが成功した後の処理 少し...

}
}
?>

サンプルテスト
<フォームメソッド=ポストアクション=""> ユーザー名:
パスワード:



1 2 3 4 5

http://www.bkjia.com/PHPjc/629727.html

www.bkjia.com

本当

http://www.bkjia.com/PHPjc/629727.html

技術記事 PHPtutorial.iniのmagic_quotes_gpc設定のアンチインジェクション方法 1. PHP設定ファイルphp.iniのmagic_quotes_gpcオプションがオンになっておらず、オフに設定されている 2. 開発者はデータ型をチェックしていません...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。