1

SQLインジェクション対策機能が充実しているASPサイトの修正依頼がありました。

この Web サイトでは、クライアントの 1 人がこのサイトに登録することを許可していません。

クライアントの名前には「SELECT」という言葉があります。また、SQL インジェクションから保護する関数は、"" を "SELECT" という単語に置き換えています。名前のない手紙を受け取ったとき、クライアントは確かに気に入らなかった. 笑

Web サイトは、次のような古い Classic ASP の方法を使用してデータにアクセスしています。

strSQL = "SELECT name " & _
   "FROM MyTable " & _
             "WHERE (ID=" & itemID & ") AND (CompanyID=" & companyID & ") AND (MenuTitle LIKE '%" & titleText & "%') "
recordset.Open strSQL

そのため、これらの関数を使用して SQL インジェクションから保護する必要があります。

これを変更したいので、パラメーター化されたクエリを使い始めます。

それで、私の質問は次のとおりです。パラメーター化されたクエリを使用する場合、このサイトからの SQL インジェクションから保護するためにこれらの関数を安全に削除できますか?

4

3 に答える 3

3

パラメータ化されたクエリの使用、Webサーバーとデータベースの間のレイヤーでのSQLインジェクションに対する保護ですが、すべてのユーザーデータがこの方法で使用される場合に限ります。

ただし、データベースレイヤー内からSQLインジェクションの問題が発生する可能性があるため、文字列補間によってクエリを作成するストアドプロシージャを呼び出さないようにしてください。

于 2012-06-19T14:25:45.827 に答える
1

私は、SQL インジェクションやその他の種類のハッキングの試みに対する唯一の保護手段として、パラメーター化されたクエリに頼るだけではありません。SQL インジェクション、クロスサイト スクリプティング、ソフトウェア セキュリティ ホールなどから保護するために、社内またはサード パーティが維持するレベルのセキュリティ ソフトウェア/コードを使用することをお勧めします。

それらの複数の機能をURLScan 3.1に置き換えることを検討して、IIS レベルでの SQL インジェクションの試みからアプリケーションを迅速かつ効果的に保護し、アプリケーション介して作業して、あなた/他の人が既に提案したように SQL ステートメントを適切にサニタイズすることを検討できます。

于 2012-06-20T12:56:24.590 に答える
0

簡単な答えはイエスです。

長い答えは「はい」ですが、それでも入力をサニタイズしたいと考えています。「SELECT」のような単語である必要はありませんが、英数字以外の文字または疑わしいもの (ユースケースに基づく)。パラメーター化されたクエリはセキュリティの重要な部分ですが、特効薬ではありません。

于 2012-06-19T12:44:14.693 に答える