1

重複の可能性:
LINQ to SQL を使用すると、SQL インジェクションを防ぐことができます

LINQ を使用して SQL データベースにアクセスしています。次のコードは安全ですか?

 var addRec = (from p in db.5544
                          where p.ID == newAddID
                          select p).Single();

            addRec.Address1 = comAddTxt1.Text;                                                                             //create address record
            addRec.Address2 = comAddTxt2.Text;
            addRec.Address3 = comAddTxt3.Text;
            addRec.Address4 = comAddTxt4.Text;
            addRec.PostCode = pstCdeTxt.Text;
            addRec.Town = twnTxt.Text;
            addRec.County = cntyTxt.Text;
            addRec.Country = cntComBox.SelectedItem.Text;

            db.SubmitChanges();

ありがとう、

4

3 に答える 3

10

はい、SQL インジェクション攻撃から安全です。

いいえ、クロス サイト スクリプティングなど、他の形式の攻撃に対して安全ではない可能性があります。

于 2012-07-17T08:02:24.640 に答える
1

XSS 攻撃のリスクを軽減するには、Web アプリケーションでデータベースから取得するときにデータを HTML エンコードする必要があります。

于 2012-07-17T07:58:16.920 に答える
1

代わりに、ストアド プロシージャを呼び出して値をパラメーターとして送信し、パラメーター チェックを提供できるようにすることをお勧めします。たとえば、'@Address1' を varchar(200) として宣言した場合、パラメーターに代わりに sql ステートメントが含まれていると、ストアド プロシージャは実行されません。

正規表現と比較することで、時間前にフィールドをチェックすることもできますが、それはより多くの労力を必要とする可能性があり、ストアド プロシージャを使用するほど安全ではありません。

于 2012-07-17T08:00:05.653 に答える