2017-02-11 3 views
1

SQLインジェクションやその他の脅威が心配です。私はSqlDataSourceを参照しているFormViewを持っています。FormViewにコードビハインドロジックがあり、権限のないユーザーがデータベースを変更できないようにしています。この方法は安全ですか?

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" 
    SelectCommand="SELECT Ads.AdId, Ads.UserId, Ads.Title, Ads.Summary, Ads.Description, Ads.ImageId, Ads.Price, Ads.MapRadius, Ads.Latitude, Ads.Longitude, Users.UserName FROM Ads INNER JOIN Users ON Users.UserId = Ads.UserId WHERE ([AdID] = @AdID)" UpdateCommand="UPDATE Ads SET Title = @Title, Summary = @Summary, Description = @Description, Price = @Price, Ads.MapRadius = @MapRadius, Latitude = @Latitude, Longitude = @Longitude, DateModified = @DateModified WHERE ([AdID] = @AdID)" OnSelecting="SqlDataSource1_Selecting"> 
    <SelectParameters> 
     <asp:QueryStringParameter Name="AdID" QueryStringField="Ad" Type="String" /> 
    </SelectParameters> 
    <UpdateParameters> 
     <asp:Parameter Name="Title" /> 
     <asp:Parameter Name="Summary" /> 
     <asp:Parameter Name="Description" /> 
     <asp:Parameter Name="Price" DbType="Double" /> 
     <asp:Parameter Name="MapRadius" DbType="Double" /> 
     <asp:Parameter Name="Latitude" DbType="Double" /> 
     <asp:Parameter Name="Longitude" DbType="Double" /> 
     <asp:Parameter Name="DateModified" DbType="DateTime" /> 
    </UpdateParameters> 
</asp:SqlDataSource> 

URLのようなものかもしれ:使用しても安全このアプローチで具体的に

domain.com/Display?Ad=314c226b-6dfd-4fd7-997b-2ec25d18c0c2 

は、私の懸念は、パラメータとしてクエリ文字列を使用しています。より一般的な質問として、私が<UpdateParameters>または<InsertParameters>を使用しなかった場合、asp:SqlDataSourceを使用するとSQLインジェクションの危険性がありますか?

ありがとうございました!

答えて

3

<UpdateParameters><InsertParameters>を使用することは、SQLインジェクションを防止するのに役立ち、それらを使用する上で正しいことです。

+0

データを選択していて、更新、挿入、削除する意図がない場合はどうなりますか?例:SqlDataSourceでGridViewを使用し、クエリ文字列パラメータを使用して特定のデータを検索して結果をフィルタリングします。 – MuffinMan

+1

'SelectParameters' - 変数をSQL文字列に直接埋め込むのではなく、パラメータを使用することは、SQLインジェクションと戦うものです。 –

関連する問題