2013-08-05 62 views
0

讓我們將該代碼作爲例子:在asp.net代碼(.aspx文件)中顯示sql是否正確/安全?

<div style="overflow:auto;width:700px;"> 
       <asp:GridView ID="GridView1" runat="server" 
        AllowPaging="True" AllowSorting="True" 
        AutoGenerateEditButton="True" DataMember="DefaultView" 
        DataSourceID="SqlDataSource1" AutoGenerateColumns="False" 
        DataKeyNames="..." CellPadding="4" ForeColor="#333333" Width="90%" 
        Height="90%" Font-Size="Small"> 
        <RowStyle BackColor="#EFF3FB" /> 
        <Columns>. 
          . 
          . 
         <asp:CommandField DeleteText="delete" ShowDeleteButton="True"></asp:CommandField> 
        </Columns>      
        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
        <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
        <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
        <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
        <EditRowStyle BackColor="#2461BF" /> 
        <AlternatingRowStyle BackColor="White" /> 
       </asp:GridView> 

       </div> 
       <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:DBUserConnectionString %>"      
        SelectCommand="SELECT ... FROM ... " 
        DeleteCommand="DELETE FROM ... WHERE [email protected];"> 
        </asp:SqlDataSource> 

由於我是新來的VB和ASP我使用的SqlDataSource來填充GridView的不落後 VB代碼(請注意這一點),一切都被顯示在aspx代碼中。當我用瀏覽器運行它並查看源代碼時,它只顯示html和很多javascript:__doPostBack's,沒有連接,沒有表格,甚至沒有asp控件。 但是,我想知道這是否是正確的方式來填寫grieps,如果它真的很安全,我的意思是有沒有辦法在瀏覽器上看到.aspx代碼?

+2

它與您的網絡服務器一樣安全。所有的asp.net控件都被轉換爲html,而像SqlDataSource這樣的聲明性數據源控件只是服務器端的控件。所以在客戶端看不到任何東西。 –

+1

應該是安全的。如果您的服務器設置正確並且沒有其他安全漏洞允許訪問您的文件系統,則無法查看服務器端代碼。 –

回答

1

將它置於代碼背後同樣安全。然而,你真的應該把這種東西放在代碼後面,這樣你就可以將你的邏輯從你的視圖中分離出來。

+2

我不認爲你應該在**代碼隱藏**中使用SQL,否則這些SQL查詢會與此「Form」耦合。您應該有一個DataAccess庫,並在該庫中使用ADO.NET或Entity Framework。這將使其可重複使用。 – christiandev

+1

@christiandev好點。理想情況下,你有一個數據訪問層,並從代碼隱藏中調用THAT。對不起,我可能已經介紹了任何混淆。 –

0

我通常不會將我的SQL查詢作爲習慣問題隱藏在代碼隱藏中。我更喜歡使用調用存儲過程的Data Portal類調用的Web服務。