2012-11-30 18 views
0

您是否知道任何良好的編碼約定,可以快速警告程序員某些變量(或配置項等)包含用戶提供的內容?我試圖提高几種攻擊媒介(如XSS)的意識,這些攻擊媒介是將非轉義內容粘貼到HTML/JavaScript/HTTP中的結果。編碼約定用於標記用戶提供的內容(提高對XSS漏洞的認識)

例如:

String UserName_UNTRUSTED = readUrlParam("username"); 

加入到澄清: 我專門找了Java編碼慣例。

回答

1

一個很好的選擇是這樣的:

是來自用戶的所有字符串必須存儲在變量(或 數據庫列)與名稱以前綴「我們」(用於 不安全字符串) 。所有已經過HTML編碼或來自已知安全位置的字符串必須存儲在名稱爲 ,以前綴「s」(安全字符串)開頭的變量中。

這與有關喬爾命名約定後採取的,你可以閱讀完整: http://www.joelonsoftware.com/articles/Wrong.html

+0

謝謝,這是一個非常好的信息來源來溝通_why_我們需要這樣一個約定。但我正在尋找更具體的建議_這些編碼約定看起來像。喬爾的文章更多的是關於選擇任何這樣的公約的理由。 – Perseids

1

GWT使用類,比如SafeHtml

這使用Java的強類型來幫助防止非轉義的用戶內容到達頁面,只要SafeHtml實例已正確創建即可。有多種轉義,連接和使用安全常量的方法。通過以一致的方式使用SafeHtml,可以更輕鬆地跟蹤變量來自何處,以及需要轉義的內容。

同樣的想法可以用在一般的Java程序中。