2016年3月9日 星期三

具有潛在危險Request.Form 的值已從用戶端偵測到 ASP.NET 2.0


Asp.Net的網站操作中,會產生『具有潛在危險 Request.Form 的值已從用戶端偵測到』此錯誤訊息之原因,通常是在PostBack後系統偵測到頁面中存在某些文字輸入欄位如TextBoxHtml編輯器(FckEditor)等文字內容中存在Html語法,因而判斷為惡意程式碼,如此來避免駭客的惡意攻擊。

此防禦功能在Asp.Net中預設是開啟的,可以透過在頁面的Page指示詞中加入 validateRequest="False" 來關閉它。即可避免資料送出後系統將Html語法判斷為惡意程式碼。

Ex

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Test.aspx.vb" Inherits="Test"
validateRequest="False" %>

另一種關閉方式是透過 web.config 設定檔來達到整個網站皆關閉防禦功能的效果。但是非常不建議直接在web.config 設定檔中作關閉的動作,這樣對系統的登入驗證頁面來說等於開了窗,非常危險。

web.config
設定檔的關閉方法:
<system.web>
        
<pages validateRequest="False" />
< /system.web>


其他參考 http://demo.tc/post/732

DataList包 DataList (DataList 的大腸包小腸) :子DataList按鈕取值

DataList1DataList2,並在DataList2中點選按鈕取得值。

test.aspx
<asp:DataList ID="DataList1" runat="server" DataKeyField="拜訪編號" DataSourceID="SqlDataSource1"> 
    <ItemTemplate>
            <asp:Label ID="lb_no" runat="server" Text='<%# Eval("lb_no") %>' />
            <asp:Button ID="Button1" runat="server" Text="按鈕1" CommandName="TestButton" />
            <asp:DataList ID="DataList2" runat="server" DataSourceID="SqlDataSource2" OnItemCommand="DataList2_ItemCommand"     >
              <ItemTemplate>
                  <asp:Label ID="lb_no2" runat="server" Text='<%# Eval("no") %>' />
                  <asp:Button ID="Button1" runat="server" Text="按鈕2" CommandName="TestButton2" />
              </ItemTemplate>
            </asp:DataList>
    </ItemTemplate>
</asp:DataList>
 
test.aspx.vb
Public Sub DataList2_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs)
    If e.CommandName = "TestButton2" Then
        Dim dl As DataList = CType(e.Item.FindControl("DataList2"), DataList)
        Dim lb_no As Label
= CType(e.Item.FindControl("lb_no2"), Label)
    End If
End Sub