2011-06-29 9 views
2

私はデータベースにテキスト行を保存する既存のストアドプロシージャに接続する必要があります。 今私はspを見て、それは連結された文字列(テキストが置かれている)であり、それはexec(@sql)で実行されます。SQLインジェクションを避けるためにexec SQLに代わるものはSP_EXECUTESQLですか?

テキストは公開されているWebサイトからのものであるため、SQLインジェクションが可能でないことを確認する必要があります。

データベースの人はSQLインジェクションについて聞いたことがないので、何をすべきかわからないが、私のアプリケーションからリスクを暴露したくないので、私は予防するために何ができるのか知りたい。 SQLインジェクション私はしかし、SQLの男よりもプログラマです。

今、私は'SP_EXECUTESQL(@SQL)'ストアドプロシージャを見つけました。これはSQLインジェクションを防ぐのに役立つのですか、それとも悪意のある呼び出しを行うことは可能ですか?

私を助けてくれてありがとうございます。

+0

私たちにSQL文を公開する可能性はありますか?すでにパラメータを使用している場合は、おそらく安全です。 –

+0

それは、SQLの男は簡単に通常のストアドプロシージャによってexec(@ SQL)を置き換えることが判明した。 – Michel

答えて

2

SP_EXECUTESQL(@SQL)のMSDNのドキュメントを参照してください。http://msdn.microsoft.com/en-us/library/ms188001.aspx

それは

ファイル名を指定して実行時にコンパイルされたTransact-SQL 文は、このようなSQLインジェクション として 悪意のある攻撃にアプリケーションを公開することができていることを警告しています。

またここを見て:http://msdn.microsoft.com/en-us/library/ms175170.aspx

私は強くいかなるユーザからの入力を信頼に対して助言します!

何らかの方法でパラメータ化されるようにクエリを変更できますか?

+0

ええ、記事を読みましたが、「Transact-SQL文またはバッチに埋め込みパラメータを含めることもできます」と表示されます。私はパラメータの使用がSQLインジェクションに役立つだろうと思った? – Michel

+0

はい、パラメータを使用するとSQLインジェクションから保護されます。 'SP_EXECUTESQL()'は普通の 'EXEC'よりも効率的に動作するようになっていますが、セキュリティ上の懸念は同じです。 –

+0

大丈夫、ありがとう、その後私は別のものを見つける必要があります。 – Michel

関連する問題