簡體   English   中英

准查詢C#SQL注入保護

[英]Parameritized query C# SQL Injection protection

我正在過濾帶有文本框的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注入。

請檢查以下鏈接: https : //msdn.microsoft.com/en-us/library/ff648339.aspx

這完全取決於您的存儲過程的功能。 您的spRL_Prd_ItemMaster過程可以構造動態SQL-僅使用參數是避免“經典” SQL注入攻擊的一種方法,但是,如果將參數傳遞給存儲過程,則如果過程本身使用參數值,則仍然可以進行SQL注入攻擊構造SQL。

如果沒有看到spRL_Prd_ItemMaster的文本,就無法斷然地說您不受SQL注入的攻擊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM