- PR -

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

投稿者投稿内容
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2006-02-08 14:00
いつもお世話になっております。

ASP.NET&Oracleで開発しております。

今、クロスサイトスクリプティング(XSS)とSQLインジェクションの対策について調査中なのですが、Webシステムの初心者の為、今ひとつ解らなくて困っています。
ASP.NETを使用した際の対応方法について詳しい方がおりましたら、ご伝授願います。

以上、よろしくお願いします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-02-08 14:28
とりあえずSQLインジェクションはSQLを発行する際に
SqlParamaterを使用するように実装すればOKかと。
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2006-02-08 14:44
説明不足でしたが、
現在、データのSELECTは「SELECT * FROM TABLE WHERE CODE=" & 1」のような形でSQL文を作成し、FillメソッドでDateSetに取得し表示してます。更新の際はDataRowに値をセットしUPDATEメソッドを実行、削除の際はDataRowを削除しUPDATEメソッドを実行しています。それでもSqlParamaterを使用した方が良いのでしょうか?
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2006-02-08 14:48
追記:
Where句の値が画面から入力される事はありません。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-02-08 15:03
引用:

それでもSqlParamaterを使用した方が良いのでしょうか?


デメリットもないし、使っても問題ないのでは?パフォーマンスも良いみたいですし。
(生の SQL をログに書き出したいという要件でパレメタライズドクエリを使いたくない、というのをよく聞きますけども)
タイプセーフな書き方もできますしね。(SqlParamater に型やサイズを設定する)

引用:

Where句の値が画面から入力される事はありません。


「現時点では」の文が付きますよね。ちょっとした変更でユーザーから入力されるようになるかもしれませんよ。

このクエリは画面から入力されないから、パラメタライズドクエリにしない。
このクエリは画面から入植されるから、パラメタライズドクエリにする。
とか面倒ですよね。

_________________
囚人のジレンマな日々
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2006-02-08 16:57
開発も結構進んでて、今更パラメタライズドクエリにするのは無理です。
今の作りで何とかSQLインジェクションの対策を行いたく思っています。
良い方法ありませんか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-08 17:12
引用:

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

良い方法ありませんか?


ありません。

# Like な検索とかある場合は特にマズー。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-02-08 17:15
「今の作りで何とかSQLインジェクションの対策を行いたく」というのは、コードを触らないって意味でしょうか。

引用:

開発も結構進んでて、今更パラメタライズドクエリにするのは無理です。
今の作りで何とかSQLインジェクションの対策を行いたく思っています。


引用:

Where句の値が画面から入力される事はありません。



一体何の心配をなさっているのでしょうか。
画面から何かを入力される事はない、と断言なさっているのに、XSS や SQL インジェクションの心配をしているのでしょうか。

なるべく少ない修正で何か対策案があるか考えてみます。(現状の私で出せる案は出しました)

#「出しました」じゃない。「既に出てます」^^;

_________________
囚人のジレンマな日々

[ メッセージ編集済み 編集者: 囚人 編集日時 2006-02-08 17:17 ]

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