web-dev-qa-db-ja.com

SQLインジェクションによる悪意のあるスクリプト

私の顧客の1人が彼のブログに投稿する際に問題があり、データベースを調べたところ、ブログ投稿に関するメールを送信するニュースレターテーブルに悪意のあるスクリプトが含まれていることがわかりました。

Malicious script

私は新人のフロントエンド開発者なので、このスクリプトが何をするかについての手がかりはありません。誰かが攻撃者の目標を手伝ってくれるだろうか?

また、攻撃者のIP(難読化されていません)を確認したところ、彼が大学を利用して攻撃を行っていたことがわかりました。 (私がいる場所や顧客の場所からそれほど遠くない)

enter image description here

私はクライアント検証を使用しており、正規表現を使用してバックエンドのデータも検証しています。そして、このスクリプトはパラメーターと一致しないので、彼はデータベースに投稿したのではないかと思います。

この種の攻撃を防ぐにはどうすればよいですか?

そして、攻撃者は何を望んでいましたか?

編集:

要求通り、コード:

[email protected]
[email protected]' and 2*3*8=6*8 and 'sfn7'='sfn7
[email protected]" and 2*3*8=6*8 and "sxju"="sxju
[email protected]%' and 2*3*8=6*8 and 'l6b4'!='l6b4%
[email protected]&n945604=v918673
[email protected]'"()&%<acx><script >j9ml(9550)</script>
[email protected]_9225

ここがこの質問をする場所でない場合は申し訳ありませんが、StackOverFlowの質問ではない可能性があると思いました。

5
Andre Aquiles

面白いもの。私が思うターゲットになるには、かなりお世辞を言うべきです。

私はそのような人を捕まえたことがありません。率直に言って、私は操作行が[email protected] '"()&%j9ml(9550)であると思います。ここで、彼らは明らかに" j9ml "という名前の関数を実行しようとしています。正確にはわかりません。あなたが超安全なブログを維持する必要があるか、あなたの顔に卵がある場合を除いて(スパムが起こっているか何か)。

@jcaronに同意しますが、最善の防御策は、すべてのクエリとストアドプロシージャをパラメーター化することです。つまり、すべてのユーザー入力を引用符で囲み、この種の攻撃を防ぐ疑問符構文を使用する必要があるということです。

悪意のある攻撃ではない可能性があることも認識しておくことが重要です。子供はおそらく遊んでいるだけでしょう。おそらく割り当てであっても、サイトで機能を実行することは必ずしも悪意があるとは限らず、違法でもありません。

1
Jesse Ivy