簡體   English   中英

Java網站保護解決方案(尤其是XSS)

[英]Java website protection solutions (especially XSS)

我正在開發一個Web應用程序,並面臨一些安全問題。

在我的應用程序中,用戶可以發送消息並查看其他人的消息(如應用程序之類的公告板)。 我正在驗證用戶可以發送到我的應用程序的所有表單字段。

有一些非常簡單的字段,例如“昵稱”,可以是6到10個字母字符,或者消息發送時間,它以字符串的形式發送給用戶,然后(當用戶要求消息時,“年輕” ”或“比日期晚”)我用SimpleDateFormat解析(我正在用Java開發,但我的問題不僅與Java有關)。

最大的問題是消息字段。 我不能僅將其限制為字母字符(大寫或小寫),因為我不得不處理一些經常使用的字符,例如“,”,/,{,}等(如果系統不滿足用戶的要求,不允許他們使用這些東西)

根據此http://ha.ckers.org/xss.html ,人們可以通過多種方式“入侵”我的網站。 但我想知道,有什么辦法可以防止這種情況發生? 不是全部,因為沒有100%的保護,但是我想要一個可以保護我的網站的解決方案。

我在服務器端使用servlet,在客戶端使用jQuery。 我的應用程序是“完整的” AJAX,因此用戶打開1個JSP,然后所有數據將由jQuery使用JSON下載並呈現。 (是的,我知道這對“ users-without-javascript”並不友好,但現在是2010年,對嗎?:-))我知道前端驗證是不夠的。 我想使用3層驗證:-1.前端,使用javascript驗證數據,然后將其發送到服務器-2.服務器端,相同的驗證,如果有的話,那不應該存在(因為客戶端javascript),則禁止用戶-3.如果有任何我之前無法捕獲的內容,則呈現過程將進行處理並適當地進行呈現

是否有任何“開箱即用”的解決方案,尤其是對於Java? 還是我可以使用的其他解決方案?

為了最大程度地減少XSS攻擊,重要的是對任何字段數據進行編碼,然后再將其放回到頁面上。 例如將>更改為>等。 當添加到頁面時,這絕不會允許任何惡意代碼執行。

我認為您通過將您期望在不同字段中使用的數據列入白名單來做很多正確的事情。 除此之外,對於可以允許其他字符編碼的字段,可能會為您解決問題。

此外,由於您使用的是Ajax,它可以為您提供一些保護,因為人們無法覆蓋URL參數等中的值。

查看AntiSamy庫。 它允許您為應用程序定義規則集,然后通過AntiSamy運行用戶輸入以按照規則清除它。

最簡單的方法是用&lt;替換以下<
>&gt;
'與\\'

這將解決大多數數據庫漏洞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM