ホームページ >バックエンド開発 >PHPチュートリアル >PHP クエリでの SQL インジェクションログイン_PHP チュートリアル

PHP クエリでの SQL インジェクションログイン_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:27:28888ブラウズ

------------------------------------------------ -------------------------------------------------- --

たとえば、次のログイン コード:

if($l = @mysql_connect('localhost', 'root', '123')) または die('データベース接続に失敗しました');

mysql_select_db('テスト');

mysql_set_charset('utf8');

$sql = 'ユーザー名 = "$username" およびパスワード = "$password" のテストから * を選択';

$res = mysql_query($sql);

if(mysql_num_rows($res)){

ヘッダー('場所:./home.php');

}その他{

die('間違った入力');

}

----------------------------@chenwei 黑目の詩人-------- - -----------------

上記の SQL ステートメントには大きなセキュリティ リスクがあるため、次のユニバーサル パスワードとユニバーサル ユーザー名を使用すると、簡単にページにアクセスできます。

1. $sql = 'select * from test where username = "***" andpassword = "***" or 1 = "1"';

明らかに、この SQL ステートメントのユニバーサル パスワードは次のとおりです: ***" または 1 = "1

2. $sql = 'select * from test where username ="***" Union select * from users/* andpassword = "***"';

スラッシュ * は、以下が実行されないことを意味します。MySQL はユニオン クエリをサポートしているため、すべてのデータを直接クエリできます。そのため、この SQL ステートメントのユニバーサル ユーザー名は次のとおりです: ***" Union select * from users/*

ただし、このインジェクションは、 if $sql = "select * from test where username = $username andpassword = $password";

の場合、コード内の SQL ステートメントのみをターゲットにします。

少なくとも上記の注入は機能しなくなりましたが、方法は同じです;

PDO を使用した後は、SQL インジェクションを完全に回避できます。急速な開発とフレームワークが蔓延するこの時代では、SQL インジェクションについて深く考える必要はありません。

------------------------------------------------- -------------------------------------------------- -

http://www.bkjia.com/PHPjc/819111.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/819111.html技術記事 -------------------------------------------------- --------------------------------------------------たとえば、次のログイン コード: if($l = @mysql_connect('localhost', 'root'...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。