黄舟2017-04-17 16:25:38
注入可能なsql:
$id=$_REQUEST['id'];
$name=$_REQUEST['name'];
select * from members where id=$id;
select * from members where id='".$id."'";
select * from members where name='".$name."'";
不可注入:
select * from members where id='".intval($id)."'";
select * from members where name=".sql_escape($name);
PHP中文网2017-04-17 16:25:38
ユーザー入力をフィルタリングし、タイプとサイズを制限し、SQL ステートメントをパラメータ化します。さらに、Web サービスのパラメータの脆弱性も考慮する必要があります。
PHP中文网2017-04-17 16:25:38
JavaEE の PreparedStatement インターフェイスを使用すると、SQL インジェクションを簡単に防ぐことができ、さまざまなデータベース メーカーのドライバーがこれを適切に実装しています。 Druid の接続プールは、SQL をフィルタリングしてインジェクションを防ぐのにも役立ちます。 Jenkins は、findBugs などの一部のプラグインと連携して、考えられる SQL インジェクション動作を見つけることができます。
PHPz2017-04-17 16:25:38
1/フロントエンド入力は jsoup を使用してフィルタリングされます。 jsoup はさまざまなフィルタリング ルールをカスタマイズすることもできます。
2/ibatis などの ORM フレームワークを使用して、SQL 実行のパラメーターをバインドします。