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 ファイルに存在します。 ..