JAVA开发常见安全问题:跨站脚本
·
专栏链接
一、数据的校验
二、认证与授权
三、Cookie与会话管理
四、错误处理
五、日志安全
六、未验证的重定向
数据的校验:跨站脚本
漏洞描述:
跨站脚本攻击(也称为 XSS)指利用网站漏洞从用户那里恶意盗取信息。用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。
检测方法:
检测 web.xml 中是否配置过滤器进行危险字符的过滤,如果存在全局过滤器,检查该过滤器的过滤规则是否健全,是否可被绕过。
检查页面输出的地方如果使用了< =>这种写法,则可能存在风险!<bean:write filter=“true”>标签和<c:out>标签是安全的,如果使用的是<bean:write filter=“false”>b标签则可能存在风险。
不合规的代码示例:
<form method="post" id="appWinForm" name="appWinForm" action="${root }/app/application.do">
<input type="hidden" id="app_userparam" name="app_userparam" value="<=request.getParameter("sso_username") >" />
<input type="hidden" id="app_ticket" name="app_ticket" value="<=request.getParameter("sso_ticket") >" />
<input type="hidden" id="MAIN_ID" name="MAIN_ID" value="<=request.getParameter("MAIN_ID") >" />
<input type="hidden" id="cas_session_id" name="cas_session_id" value="<=request.getParameter("cas_session_id") >" />
</form>
不合规说明:
对用户输入、输出的数据未做任何危险字符的过滤。
合规的代码示例:
<form method="post" id="appWinForm" name="appWinForm" action="${root }/app/application.do">
<input type="hidden" id="app_userparam" name="app_userparam" value="<c:outvalue="<=request.getParameter("sso_username")>"></c: out>" />
<input type="hidden" id="app_ticket" name="app_ticket" value="<c:outvalue="<=request.getParameter("app_ticket") >"></c:ou t>" />
<input type="hidden" id="MAIN_ID" name="MAIN_ID" value="<c:outvalue="<=request.getParameter("MAIN_ID") >"></c:out>"/>
<input type="hidden" id="cas_session_id" name="cas_session_id" value="<c:outvalue="< =request.getParameter("cas_session_id") >"></ c:out>" />
</form>
合规说明:
使用了<c:out>安全标签来输出用户的数据。
更多推荐



所有评论(0)