簡體   English   中英

Fortify-源掃描

[英]Fortify - Source Scan

我們對代碼運行了Fortify源代碼掃描。 在許多地方,它顯示出嚴重的問題/違反:

跨站點腳本:反映-WorkSheet.jsp中的_jspService()方法將未經驗證的數據發送到第368行的Web瀏覽器,這可能導致瀏覽器執行惡意代碼。

行號368是

subNum="<%=submissionNo%>";

我們使用以下方式提交 SubmitNo:

String submissionNo = request.getParameter("SUBMISSIONNO");

是否有任何方法可以在不使用JSTL的情況下解決此問題,或者JSTL是唯一的選擇?

查看@jcoppens提供的URL,並記住這一主要規則:在輸入時執行輸入驗證,在輸出時執行編碼。

請查看OWASP Stinger作為輸入,而OWASP ESAPI或OWASP JEP作為編碼替代,請不要滾動自己的驗證框架。

不要在客戶端執行輸入驗證,這很容易被繞過。

除非您可以絕對保證不會惡意修改任何數據,否則請不要認為任何數據源都是受信任的。 是的,這意味着您的數據庫不受信任。

消除XSS風險的最佳解決方案始終是在源代碼中解決問題。 為此,您必須先清除所有用戶輸入,然后再將其處理和/或呈現回瀏覽器。 例如,在JSP中,當顯示用戶控制的輸入時,通過使用JSTL <c:out>標記或fn:escapeXml() EL函數。

如果您不能執行第一個解決方案,因為這會給您帶來巨大的成本,則應該執行常規服務器輸入驗證。

如果您使用的是Spring MVC,Struts,Struts2,Grails或JSF,則可以嘗試使用HDIV 它消除了只讀數據的XSS風險,對來自客戶端的其余數據應用完整性驗證(確保接收的值與服務器端生成的值相同)。 對於表單中包含的文本字段(非只讀數據),HDIV提供常規驗證(白名單和黑名單)。 此外,它提供了更多功能來消除或緩解OWASP十大風險。

暫無
暫無

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

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