2016-05-11 4 views
0

SQLインジェクションテストを実行しようとしていますが、現在パラメータをスペースで区切っているコマンドラインをテスト中ですので、スペースなしでSQL文を書きます。私はそれをダウンしました:キーワード間にスペースを入れずにSQL文を書くことができます

create table"aab"("id"int,"notes"varchar(100)) しかし、私はどのようにCREATEとTABLEの間のスペースを取り除くかを理解することはできません。同じことが明らかにDROPとTABLEなどに当てはまります。

誰にもアイデアはありますか?これはMicrosoft SQL Server 2014用です。ありがとう!

[更新]:脆弱性について第三者の製品を評価しています。私は弱点のために自分自身のコードをテストするためにこれをやっていません。

+1

他の空白文字(改行など)を入れることができますが、セパレータが必要です。 –

+0

単にプリペアドステートメントを使用しないのはなぜですか?それはまた、SQLインジェクションからあなたを保存します。 – Carra

答えて

0

これはできません。すべての引数をチェックして、意図した通りであることを確認する必要があります。

数字であると思われる場合は、数字であることを確認してください。リクエストを実行するときにエスケープする必要がある特定のキャラクター(「や」など)を含む文字列であるはずです。

+0

応答をありがとう、Julien!私はより明確にすべきだった。 SQLインジェクション攻撃から保護するための開発方法を理解しています。 SQLインジェクションに脆弱で、プログラムがerlangで書かれているかどうかを確認するために、サードパーティ製品を評価しています。だから私が前に使ったことのない言語でたくさんのコードを掘り起こす前に、私はタイヤを蹴り、私がそれを壊すことができるかどうかを見ています。 –

1

確かに、スペースを入れず、かなり手の込んだ文を書き込むことが可能である(JavaでのPreparedStatementのような)帽子の世話をするためにあなたのプログラム書き込みの関連リンク言語で専用のメカニズムがあるはずです。

ここが1です。

select'asdf'as[asdf]into[#MyTable] 

sp_executesqlをスペースなしで実行することもできます。

exec[sp_executesql]N'select''asdf''as[asdf]into[#MyTable]' 
関連する問題