C# 这种方法使用安全吗?

C# 这种方法使用安全吗?,c#,sql,asp.net,sql-server,C#,Sql,Asp.net,Sql Server,我对使用SQL Server和ASP.NET还比较陌生,所以我担心SQL注入或其他威胁。我有一个引用SqlDataSource的FormView,其中FormView具有代码隐藏逻辑,防止未经授权的用户对数据库进行更改。使用这种方法是否安全: <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>

我对使用SQL Server和ASP.NET还比较陌生,所以我担心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>
更具体地说,我关心的是使用查询字符串作为参数。对于一个更一般的问题,如果我没有使用
,那么在使用
asp:SqlDataSource
时会有SQL注入的风险吗


谢谢大家!

使用
有助于防止SQL注入,您使用它们是正确的。

如果我只是选择数据,没有更新、插入或删除的意图,该怎么办?例如:将GridView与SqlDataSource一起使用,并通过使用查询字符串参数筛选结果以查找特定数据。
SelectParameters
-使用参数而不是将变量直接嵌入SQL字符串是防止SQL注入的关键。
domain.com/Display?Ad=314c226b-6dfd-4fd7-997b-2ec25d18c0c2