- PR -

ASP.NETにおけるXSS、SQLインジェクション対策

投稿者投稿内容
ひら
ぬし
会議室デビュー日: 2005/03/04
投稿数: 260
投稿日時: 2006-02-08 18:10
引用:

お獅子さんの書き込み (2006-02-08 18:00) より:

修正箇所が莫大に有るのと、ほとんどテスト完了してる状態なので、全て再テストとなると、時間が無いので無理です。




【XSSに関して】テキストボックスで<s>と入力してボタンを押してみてください

【SQLインジェクションに関して】 テキストボックスで'(シングルクォーテーション)を入力してボタンを押してみてください

私の場合は、これで周囲を説得しました。

もし上記の方法でエラーが表示されるのであれば、テストは未完ということになりますね。
がんばって下さい。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-02-08 18:14
引用:

お獅子さんの書き込み (2006-02-08 17:48) より:
入力/出力部分でのサニタイジングする事によってXSSとSQLインジェクションの対策になると考えて良いのでしょうか。


はい、ただしXSSに対応したサニタイジングとSQLインジェクションに対応したサニタイジング
は別物ですので注意が必要です。通常は、SQLインジェクションへの対応は入力時、XSSへの
対応は出力時に行います。

また入力時にはサニタイジングだけでなく、入力チェックもきちんと行うことが前提です。
たとえば数値データしか入力されないはずの項目に、それ以外の入力値をが入力されても通って
しまうようでは論外です。
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2006-02-08 18:22
引用:

ひらさんの書き込み (2006-02-08 18:10) より:

【XSSに関して】テキストボックスで<s>と入力してボタンを押してみてください



これはASP.NETの標準機能で例外にスローされます。

引用:

【SQLインジェクションに関して】 テキストボックスで'(シングルクォーテーション)を入力してボタンを押してみてください



Oracleエラーになりました。(-.-)

どうやって回避すれば良いのでしょうか?教えて頂けないでしょうか。お願いします。
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2006-02-08 18:24
引用:

ukさんの書き込み (2006-02-08 18:14) より:
はい、ただしXSSに対応したサニタイジングとSQLインジェクションに対応したサニタイジング
は別物ですので注意が必要です。通常は、SQLインジェクションへの対応は入力時、XSSへの
対応は出力時に行います。



すみません。具体的な方法とかあれば教えて頂けませんか。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-02-08 18:25
引用:

修正箇所が莫大に有るのと、ほとんどテスト完了してる状態なので、全て再テストとなると、時間が無いので無理です。



NUnitによるテストの自動化はおこなっていないのでしょうか?
サニタイジング処理を追加するにしても、影響範囲はかなり大きいと思いますが。。。
個人的にはサニタイジング処理を作り込むよりSqlParamaterを使用するように修正したほうが、いいと思います。
もしくは対応を諦める。。。。
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2006-02-08 18:29
引用:

未記入さんの書き込み (2006-02-08 17:16) より:
Where句以外のところでもインジェクション脆弱性は入り込めるのでは?


Where句以外はRecordSetに変数の値としてセットされるだけなのかな思っていますが、どうでしょう。
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2006-02-08 18:47
引用:

NUnitによるテストの自動化はおこなっていないのでしょうか?



NUnitは知りませんでした。
さっと詳細を見ましたが何のテストをするのかよく分かりませんでした。
これで実行後の計算結果が正しいかとかのテストか可能なのでしょうか。

引用:

SqlParamaterを使用するように修正したほうが、いいと思います。



取り合えず画面から入力した値をWhere句に使用している画面だけでもSqlParamaterを使用する方向で考ようと思います。
ひら
ぬし
会議室デビュー日: 2005/03/04
投稿数: 260
投稿日時: 2006-02-08 18:51
引用:

お獅子さんの書き込み (2006-02-08 18:22) より:

どうやって回避すれば良いのでしょうか?教えて頂けないでしょうか。お願いします。



安直な方法ではあるのですが、

XSSの対策)Pageディレクティブに validateRequest="false"を追加する
Oracleの方にfunctionを用意し、該当する項目に対してselectをかけるときに
このfunctionを通す

SQLの対策)パラメータクエリに書き換える(みなさんと一緒ですね)

最初に取り組まなくてはならないのは、周囲の説得ではないでしょうか・・・?

スキルアップ/キャリアアップ(JOB@IT)