2010-01-19 78 views
0

我在ASP.NET 3.5這需要以文本格式一些輸入,並在SQL Server 2005數據庫保存它創建了一個網站。數據庫字段爲varcahar(50)特殊符號不能存儲在SQL Server從ASP.NET 3.5

但是,如果在文本框中數據包含了諸如<特殊符號,我不能這樣做,>,#,@ ,.

它生成顯示安全錯誤的客戶端腳本錯誤。

對於腳本我正在使用JavaScript。

+0

數據庫不關心符號是什麼。問題將出現在您的腳本或您的代碼隱藏中。你可以發佈一些代碼嗎? – 2010-01-19 12:57:11

+0

你正確的概率是與腳本 – Swati 2010-01-20 12:41:05

回答

3

正如@約翰諾蘭寫道,這極有可能是ASP.NET內置的請求驗證的結果。

您必須關閉內置的驗證和滾你自己:

您可以在頁級別關閉驗證:

<%@ Page validateRequest="false" %> 

或(在web.config中)應用層面:

<configuration> 
    <system.web> 
     <pages validateRequest="false" /> 
    </system.web> 
</configuration> 

不要忘記對應用程序的所有輸出進行編碼,特別是在關閉請求驗證之後。

檢出this article關於這個問題。

爲了保護您的應用程序,你必須遵循常見的Web應用安全準則和他人之間編碼直接或間接產生的用戶,以避免跨站點腳本(XSS)所有的輸出。微軟提供了一個Anti XSS library來簡化這一點。 OWASP有一個XSS預防cheat sheet

+0

不會對我的應用程序安全威脅 – Swati 2010-01-20 11:58:09

+0

嗯,即使你不關閉請求驗證你應該驗證你的輸入並編碼你的輸出。內置的請求閥值僅提供基本的部分保護。 我已經更新了我的答案以及一些AntiXss資源的其他鏈接。 – PHeiberg 2010-01-20 12:57:52

1

這聽起來並不像<>字符。嘗試關閉頁面指令中的validaterequest。警告:雖然這將允許惡意內容。最好對輸入進行編碼。