質問

ここで少し混乱しています。私の知る限り、Microsoft は、SQL インジェクション攻撃からデータベースを保護するにはパラメータ化が最良の方法であると主張しています。しかし、ここで 2 つの矛盾する情報源を見つけました。

このページ ADO コマンド オブジェクトを使用することを示しています。しかし このページ コマンド オブジェクトはスクリプト作成には安全ではないと言われています。セキュリティ上の脆弱性があるため、コマンド オブジェクトは VBScript または JScript で使用すべきではないという内容をどこかで読んだ記憶があるのですが、その記事が見つからないようです。

ここで何かが欠けているのでしょうか、それともこれら 2 つの記事は互いに矛盾しているように見えますか?

役に立ちましたか?

解決

ここで私は間違っている可能性がありますが、これは誰かが Command オブジェクトを使用して悪いことをする可能性があることを意味していると思います。つまり、他の人がスクリプトを作成している場合は信頼できません。

見る スクリプトを作成しても安全 記事上で。オンラインでこのフレーズについて話すすべてのインスタンスは、ActiveX コントロールに「このコントロールは I/O を行わないか、送信元のサーバーとのみ通信します」とマークしているかのようにこのフレーズを参照しますが、Command オブジェクトはそれを行いません。安全ではない可能性のある多くのことを行うために使用できます。

彼らが話している「安全」と SQL インジェクションを防ぐための「安全」は 2 つの別のものです。ADO Command オブジェクトを使用してデータをパラメータ化する方法に関する記事は的確です。そうすべきです。

そして、Microsoft はこれをここでさらに確認しています。

http://msdn.microsoft.com/en-us/library/ms676585(v=VS.85).aspx

他のヒント

「スクリプトを実行しても安全」とは、「ナイジェリアの王子から取得した Web ページから実行しても安全」を意味すると思います。コマンド オブジェクトはサーバー上で安全に実行できる必要があります。

しかし、職場では、当時、同僚がそれを信頼していなかったので、基本的に同じことを行う社内フレームワークがありました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top