PHPのアンチSQLインジェクション方法を詳しく解説(1/4)_PHPチュートリアル

WBOY
リリース: 2016-07-13 17:09:43
オリジナル
1125 人が閲覧しました

magic_quotes_gpc = オフの場合のインジェクション攻撃
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 = mysqltutorial_query($t_strsql) )

{

// クエリが成功した後の処理 少し...
}
}
?>
サンプルテスト
<フォームメソッド=ポストアクション=""> ユーザー名:
パスワード:





このスクリプトでは、ユーザーが通常のユーザー名とパスワードを入力すると、値がそれぞれ zhang3 と abc123 であると仮定すると、送信される SQL ステートメントは次のようになります。

コードは次のとおりです:


tbl_users から * を選択
ここで、ユーザー名 = 'zhang3' およびパスワード = 'abc123' 制限 0,1

攻撃者がユーザー名フィールドに zhang3' または 1=1 # を入力し、パスワード フィールドに abc123 を入力すると、送信される SQL ステートメントは次のようになります。 コードは次のとおりです:


tbl_users から * を選択

ここで、ユーザー名 = 'zhang3' または 1=1 #' およびパスワード = 'abc123' 制限 0,1

# は mysql のコメント文字であるため、# の後のステートメントは実行されません。この行のステートメントを実装すると、次のようになります。 コードは次のとおりです:

tbl_users から * を選択
ここで、ユーザー名='zhang3' または 1=1

これにより、攻撃者は認証をバイパスできます。攻撃者がデータベース構造を知っている場合、ユニオン選択を構築しますが、これはさらに危険です:
ユーザー名に zhang3 ' または 1 =1 Union select cola,colb,cold from tbl_b #
と入力するとします。 パスワードを入力してください: abc123、

次に、送信された SQL ステートメントは次のようになります:
コードは次のとおりです:

tbl_users から * を選択
ここで、ユーザー名='zhang3'
または 1 =1 Union select cola、colb、cold from tbl_b #' およびパスワード = 'abc123' 制限 0,1


1 2 3 4


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

www.bkjia.com
tru​​e

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

技術記事 . magic_quotes_gpc = off magic_quotes_gpc = off の場合のインジェクション攻撃は、PHP チュートリアルでは非常に危険なオプションです。新しいバージョンの php では、デフォルト値が on に変更されました。でもまだ写真があるんです…
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート