参数化查询C#SQL注入保护

参数化查询C#SQL注入保护,c#,C#,我正在过滤带有文本框的gridview 有人能看一下代码并告诉我我是否受到SQL注入攻击的保护吗 <asp:TextBox ID="TextBox_ItemNbr" runat="server" Font-Size="X-Small"></asp:TextBox> <asp:Button ID="Button_ItemNbr" runat="server" Text="ItemNbr Search" Font-Size="X-Small" OnCli

我正在过滤带有文本框的gridview

有人能看一下代码并告诉我我是否受到SQL注入攻击的保护吗

    <asp:TextBox ID="TextBox_ItemNbr" runat="server" Font-Size="X-Small"></asp:TextBox>
    <asp:Button ID="Button_ItemNbr" runat="server" Text="ItemNbr Search" Font-Size="X-Small" OnClick="Button_ItemNbr_Click" />
<br /><br /><hr />
    <asp:GridView ID="GridView_ItemNbr" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="SqlDataSource_ItemNbrGridView" Font-Size="X-Small" PageSize="125">
        <Columns>
            <asp:BoundField DataField="Vendor Nbr" HeaderText="Vendor Nbr" SortExpression="Vendor Nbr" />
            <asp:BoundField DataField="Vendor Name" HeaderText="Vendor Name" SortExpression="Vendor Name" />
            <asp:BoundField DataField="Vendor Nbr Dept" HeaderText="Vendor Nbr Dept" SortExpression="Vendor Nbr Dept" />
            <asp:BoundField DataField="Item Status" HeaderText="Item Status" SortExpression="Item Status" />
            <asp:BoundField DataField="Item Nbr" HeaderText="Item Nbr" SortExpression="Item Nbr" ReadOnly="True" />
            <asp:BoundField DataField="Item Desc 1" HeaderText="Item Desc 1" SortExpression="Item Desc 1" />
            <asp:BoundField DataField="Unit Cost" HeaderText="Unit Cost" SortExpression="Unit Cost" />
            <asp:BoundField DataField="Unit Retail" HeaderText="Unit Retail" SortExpression="Unit Retail" />
            <asp:BoundField DataField="Vendor Stk Nbr" HeaderText="Vendor Stk Nbr" SortExpression="Vendor Stk Nbr" />
            <asp:BoundField DataField="VNPK Qty" HeaderText="VNPK Qty" SortExpression="VNPK Qty" />
            <asp:BoundField DataField="VNPK Cost" HeaderText="VNPK Cost" SortExpression="VNPK Cost" />
            <asp:BoundField DataField="WHPK Qty" HeaderText="WHPK Qty" SortExpression="WHPK Qty" />
            <asp:BoundField DataField="WHPK Cost" HeaderText="WHPK Cost" SortExpression="WHPK Cost" />
            <asp:BoundField DataField="Group1" HeaderText="Group1" ReadOnly="True" SortExpression="Group1" />
            <asp:BoundField DataField="Group2" HeaderText="Group2" ReadOnly="True" SortExpression="Group2" />
            <asp:BoundField DataField="Group3" HeaderText="Group3" ReadOnly="True" SortExpression="Group3" />
        </Columns>
    </asp:GridView>

    <asp:SqlDataSource ID="SqlDataSource_ItemNbrGridView" runat="server" ConnectionString="<%$ ConnectionStrings:constring_RL_Name %>" SelectCommand="spRL_Prd_ItemMaster" SelectCommandType="StoredProcedure">
        <SelectParameters>
            <asp:ControlParameter ControlID="TextBox_ItemNbr" DefaultValue="%" Name="ItemNbrSearch" PropertyName="Text" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>





根据Microsoft安全指南,使用sql参数可以防止sql注入

请查看以下链接:
这完全取决于存储过程的功能。您的spRL_Prd_ItemMaster过程可能会构造动态SQL-仅使用参数是避免“经典”SQL注入攻击的一种方法,但如果将参数传递给存储过程,则如果过程本身使用参数值构造SQL,则仍然可以构造SQL注入攻击


如果没有看到spRL_Prd_ItemMaster的文本,就不可能明确地说您不受SQL注入的影响。

Hazem-是;但只有当参数作为SQL语句的一部分使用时——在本例中,OP使用参数将值传递到存储过程中。在这种情况下,即使使用参数也可以创建SQL注入。取决于存储过程的功能。是。。我同意你的看法