专栏链接

一、数据的校验

  1. SQL注入
  2. 命令注入
  3. 跨站脚本
  4. 任意文件上传
  5. 任意文件下载
  6. 任意文件删除
  7. 任意文件读取与写入
  8. Iframe 框架钓鱼
  9. 负值支付漏洞

二、认证与授权

  1. 密码修改(无需原密码)
  2. 密码策略不足
  3. 用户名密码(敏感信息)明文传输
  4. 验证码可重复利用
  5. 缺少验证码功能
  6. 用户名枚举(用户名和密码单独验证)
  7. 登录尝试次数限制功能失效
  8. 登录后门
  9. 横向越权
  10. 纵向越权

三、Cookie与会话管理

  1. 直接关闭浏览器“退出“系统
  2. 会话标识未更新
  3. Cookie 中明文存储用户名、密码

四、错误处理

  1. 数据库交互中的异常处理

五、日志安全

  1. 日志记录敏感信息

六、未验证的重定向

  1. URL 重定向

数据的校验:跨站脚本

漏洞描述:

跨站脚本攻击(也称为 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>安全标签来输出用户的数据。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐