2009-05-03 94 views

回答

8

#1你可以做的事情是將你的cookies設置爲HTTP Only ...至少可以防止會話cookie被劫持。就像有人在您自己的網站管理員身上竊取您的Cookie一樣。

其餘的是驗證所有的用戶輸入。

  • 規則#0 - 切勿將不受信任的數據除了在允許的位置
  • 規則#1 - HTML逃生插入不可信數據到HTML元素內容
  • 規則#2之前 - 屬性逃生插入不可信數據轉換成HTML之前通用屬性
  • 規則#3 - JavaScript的逃生之前插入不可信數據到HTML的JavaScript數據值
  • 規則#4 - CSS逃逸插入不可信數據轉換成HTML風格屬性值之前
  • 規則#5 - URL逃逸插入不可信數據轉換成HTML URL屬性之前在這裏詳細

非常漫長的主題討論:

http://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

http://www.owasp.org/index.php/Cross_site_scripting

XSS只是衆多漏洞之一併且每個web開發者都應該學會imho的前10名OWASP

http://www.owasp.org/index.php/Top_10_2007

0

我不會寫你的代碼,但是如果你使用asp.net,你會被部分覆蓋。 asp.net具有他們稱之爲請求驗證的功能,當它啓用時,它可以防止通過用戶輸入引入惡意腳本。

但有時候,您必須允許某種文本編輯器,例如您在此問題中鍵入的文本編輯器。在這種情況下,您必須部分禁用請求驗證,以允許最終用戶輸入一些「富文本」html。在這種情況下,你將不得不建立某種白名單過濾機制。

僅供參考,我不知道其他人,但Microsft有一個名爲Anti-Xss的庫。

+0

不幸的是,MS lib只有這麼/那麼...但是好得多。以下是最新(測試版)http://www.microsoft.com/downloads/details.aspx?FamilyId=051ee83c-5ccf-48ed-8463-02f56a6bfc09&displaylang=en – 2009-05-03 04:22:21

2

就像你可以通過使用預處理語句使SQL注入不成問題一樣,你可以通過使用模板引擎(DOM序列化程序)來做出類似的事情,從而使XSS不成問題。

設計您的應用程序,使所有輸出通過模板引擎。默認情況下,使模板引擎HTML轉義所有數據。通過這種方式,您將擁有默認安全的系統,並且不依賴人類(以及大型系統的其他部分)努力逃避HTML。