我正在使用條紋框架來實現一個web應用程序。爲了避免各種攻擊,文本被存儲在數據庫中,並且清理過程包括HTML實體的編碼。條紋框架:我如何禁止字符串轉義形式
當我用條紋製作表格時,出現了我的問題。當表格開始空時,一切都很好。但是,當用戶以前輸入的內容是這種形式時,並且現有值從數據庫中提取,設置在動作bean中,然後由條紋形式標籤顯示,則條紋會再次轉義。這導致我的字符串雙重轉義。
無論如何,我可以告訴條紋,我知道我在做什麼,我給你的字符串已經逃脫了?
我正在使用條紋框架來實現一個web應用程序。爲了避免各種攻擊,文本被存儲在數據庫中,並且清理過程包括HTML實體的編碼。條紋框架:我如何禁止字符串轉義形式
當我用條紋製作表格時,出現了我的問題。當表格開始空時,一切都很好。但是,當用戶以前輸入的內容是這種形式時,並且現有值從數據庫中提取,設置在動作bean中,然後由條紋形式標籤顯示,則條紋會再次轉義。這導致我的字符串雙重轉義。
無論如何,我可以告訴條紋,我知道我在做什麼,我給你的字符串已經逃脫了?
看來最好的解決方案就是不使用條紋的問題領域。如果在你的JSP替換,例如:
<stripes:textarea name="userEntryComment"/>
與
<textarea name="userEntryComment">${actionBean.userEntryComment}</textarea>
Thenexcept條紋是不是在所有的調用來生成的第二個版本的HTML。也因爲在這種情況下,我們不使用< c:out >標記,該字符串不會被重新轉義。
HTML實體的編碼解碼由Stripes處理,因此實際上不需要將編碼的HTML實體存儲在數據庫中。只需從清理過程中刪除HTML實體的編碼,Stripes將安全地處理數據。
還有一點需要指出:將模型數據(MVC model!)存儲爲HTML等演示文稿格式可能被認爲是一種不好的做法。而HTML實體當然也是HTML格式的數據。他們會限制/阻礙您在執行各種其他事情時使用數據,例如搜索,發送文本電子郵件等。
關於存儲編碼HTML的評論是正確的,但是將編碼後的HTML存儲在數據庫中是保證完美抵禦HTML/js注入和XSS的最佳方式。這種方式你永遠不需要記住要逃脫你的輸出。 無論如何,這並不能回答我的問題。 – LordOfThePigs
限制允許的字符會更安全。無論如何,你可能會發現這也是有趣的:http://code.google.com/p/stripes-xss/ – Kdeveloper
因此,在數據庫中存儲unsanitized字符串是否是否定的? :( – yihtserns