ホームページ  >  記事  >  バックエンド開発  >  ThinkPHP フレームワークの初期バージョンにおける SQL インジェクションの脆弱性の詳細な分析_PHP チュートリアル

ThinkPHP フレームワークの初期バージョンにおける SQL インジェクションの脆弱性の詳細な分析_PHP チュートリアル

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

ThinkPHP 3.1.3 およびそれ以前のバージョンには SQL インジェクションの脆弱性があるという発表が ThinkPHP 公式 Web サイトにありました。この脆弱性は ThinkPHP/Lib/Core/Model.class.php ファイルに存在します。 公式ドキュメントによると「SQLインジェクションを防ぐ」方法が説明されています(http://doc.thinkphp.cn/manual/sql_injection.html参照)
クエリ条件の前処理を使用すると、SQL インジェクションを防ぐことができます。次のコードを使用する場合に効果的です。
リーリー

または

リーリー

ただし、次のコードを使用する場合、「SQL インジェクションを防ぐ」効果はありません (ただし、公式ドキュメントには SQL インジェクションを防ぐことができると記載されています)。

リーリー

または
リーリー

原因分析:
ThinkPHP/Lib/Core/Model.class.php ファイルの parseSql 関数は SQL フィルタリングを実装しません。

その本来の機能は次のとおりです:

リーリー

脆弱性の検証(例):

リクエストアドレス:


リーリー

または

リーリー

アクションコード:
リーリー

または:

リーリー

結果:
テーブル peipeidui 内のすべてのデータがリストされ、SQL インジェクション ステートメントが有効になります。


解決策:

parseSql 関数は次のように変更できます:

リーリー

概要:
1. TP の基礎となる SQL フィルタリングに過度に依存しないでください。プログラマはセキュリティ チェックを行う必要があります。 2. $_GET と $_POST を直接使用することはお勧めしません



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

www.bkjia.com

http://www.bkjia.com/PHPjc/824645.html技術記事 ThinkPHP の公式 Web サイトには、ThinkPHP 3.1.3 およびそれ以前のバージョンに SQL インジェクションの脆弱性があるという発表がありました。公式ドキュメントによると、この脆弱性は ThinkPHP/Lib/Core/Model.class.php ファイルに存在します。 ..
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。