ホームページ > ウェブフロントエンド > jsチュートリアル > php is_numberic function_javascript スキルに起因する SQL インジェクションの脆弱性

php is_numberic function_javascript スキルに起因する SQL インジェクションの脆弱性

WBOY
リリース: 2016-05-16 16:55:58
オリジナル
1374 人が閲覧しました

1. is_numberic 関数の概要
is_numberic 関数は、一部の国内 CMS プログラムで使用されています。まずこの関数の構造を見てみましょう。
bool is_numeric (mixed $var)
If var が数値または数値文字列の場合は TRUE を返し、それ以外の場合は FALSE を返します。
2. 関数は安全ですか?
次に、この関数が安全かどうかを示す例を見てみましょう。

コードをコピー コードは次のとおりです。
$s = is_numeric($_GET['s'] )?$ _GET['s']:0;
$sql="insert into test(type)values($s);" //values('$s' ではなく、values($s) です) )
mysql_query ($sql);

上記のフラグメント プログラムは、パラメータ s が数値であるかどうかを判断し、数値である場合は数値を返し、そうでない場合は 0 を返します。その後、クエリのためにデータベースに取り込まれます。 (この方法では、SQL ステートメントを構築できません)
「1 または 1」を s パラメーターの値として 16 進数の 0x31206f722031 に変換します。
プログラムの実行後、以下に示すようにデータベースにクエリを実行します。
php is_numberic function_javascript スキルに起因する SQL インジェクションの脆弱性
このテーブルのフィールドを再度クエリし、フィルタリングせずに別の SQL ステートメントを取り込むと、2 つのインジェクションが発生します。
3. 試しないでください。この関数を使用する場合は、標準 SQL ステートメントを使用し、条件に一重引用符を追加して、16 進数 0x31206f722031 がデータベースに表示されるようにすることをお勧めします。 1も1もないでしょう。
関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート