WEB漏洞攻击XSS、CSRF、SSRF的概念和防御

XSS,CSRF,SSRF三种常见的Web服务端漏洞均是由于,服务器端对用户提供的可控数据过于信任或者过滤不严导致的。

XSS,CSRF,SSRF区别

XSS:(跨站脚本攻击)是服务器对用户输入的数据没有进行足够的过滤,导致客户端浏览器在渲染服务器返回的html页面时,出现了预期值之外的脚本语句被执行。通常指黑客通过 HTML 注入 篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击行为。

CSRF:(跨站请求伪造)是服务器端没有对用户提交的数据进行校验,且对http请求包内的refer字段校验不严,导致攻击者可以利用用户的Cookie信息伪造用户请求发送至服务器。

SSRF:(服务端请求伪造)是服务器对用户提供的可控URL过于信任,没有对攻击者提供的URL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或其他服务器。

xss防御

大部分XSS(跨站脚本攻击)的目的都是通过浏览器的同源策略,来获取用户Cookie,从而冒充用户登陆系统的。

可以使用 HttpOnly 来禁止JavaScript读取Cookie值,窃取用户身份(在setcookie方法的第七个传入参数中设置了变量true,表示这个cookie具有Http-only属性,那么任何JavaScript脚本都没有权限读取这条cookie的内容。)

一般在后台通过http设置前台cookie时添加此参数。如下为java设置方式:

response.setHeader("Set-Cookie","deniro=1; Path=/;Domain=www.deniro.net;"+"Max-Age=30;HTTPOnly");

只为cookie中的值设置HttpOnly 是不够的,因为XSS攻击并不是只能获取用户COOKIE,它的攻击类型有:

  • 利用xss获得cookie
  • 重定向到钓鱼网站
  • 展示不法内容或广告

防御措施有:

  • 对字符实体进行转义
  • 使用HttpOnly 来禁止JavaScript读取Cookie值
  • 输入时校验
  • 浏览器与Web应用端采用相同的字符编码
  • 对URL参数进行过滤(白名单和黑名单)
  • 如果 <script>, <style>, <img> 等标签的 src 和 href 属性值为动态内容,那么要确保这些url没有执行恶意连接。 确保:href 和 src 的值必须以 http://开头,白名单方式

csrf防御

Referer标识当前请求的来源页面,浏览器访问时除了自动带上Cookie还会自动带上Referer,所以服务端可以检测Referer头是否本网站页面来决定是否响应请求。

token就是服务端返回给客户端类似sessionid那样一长串的类值(长是为了防暴力猜解)。csrf依赖于浏览器该问链接时自动对应网站的cookie带上,token可以不存道cookie中,这样我们就可以通过检测发送过来的数据包中是否有正确的token值来决定是否响应请求。

ssrf防御

  • 限制协议为HTTPS,安装SSL证书,对网站传输加密数据
  • 不用限制302重定向
  • 设置URL白名单或者限制内网IP

其他安全措施

  • 服务器及时安装系统补丁
  • 服务器安装和设置防火墙
  • 关闭不需要的服务和端口,设置白名单
  • 定期对服务器进行备份
  • 设置监控机制和回滚机制,日志监控
  • 账号和密码保护(加密措施、验证码措施、密码复杂度)
  • 请求数据对称加密
加载中...
加载中...