XSS、CSRF

XSS 攻击

反射性跨站脚本攻击

介绍

攻击者将含有恶意脚本的URL发送给用户,用户打开URL对应得页面时,浏览器执行URL中的脚本,浏览器执行恶意脚本。

攻击者可以用此方法窃取用户Cookie。

例如如下代码:

<div>
  <img src="/images/handler.ashx?id=<%=Request.QueryString["id"] %>" />
</div>

当攻击者引诱用户执行如下URL时

http://www.xxx.com/?id=" /><script>alert(/xss/)</script><br x="

反射出的HTML代码如下:

<div>
    <img src="/images/handler.ashx?id=" /><script>alert(/xss/)</script><br x="" />
 </div>
解决方法
  • 在表单提交或者URL参数传递前,对参数进行过滤
  • 过滤用户输入的内容

存储型跨站脚本攻击

介绍

攻击者利用web应用程序提供的录入或修改数据的功能,将恶意脚本存入服务器或者用户cookie中,当用户浏览该数据页面时,页面中嵌入的恶意脚本就会执行。

解决办法
  • 后端过滤表单提交的参数
  • 前端转义、过滤处理

DOM跨站脚本攻击

介绍
  • html页面中定义了js代码,要求根据用户的输入不同,执行不同的html代码,攻击者可以在输入时,插入一段恶意脚本,执行html代码时会执行恶意脚本。
  • DOM跨站是纯脚本的输出,只有规范使用JavaScript才可以防御。
我们的项目中解决方案
import  com.XXX.platform.utils.AntiXssUtil
AntiXssUtil.decodeHtml(AntiXssUtil.cleanHtml(String))

CSRF(Cross-site request forgery)跨站请求伪造

介绍

CSRF是通过伪装受信用用户的请求来利用受信任的网站。

解决方法

  • 服务端对提交页面进行Referer的合法性验证
  • 规范请求类型
  • 设置请求Token

项目中代码(使用的第一种方法):

  private boolean allow(PlatformController controller, HttpServletRequest request) {
        String refererHost = WebUtil.getHostOfUrl(WebUtil.getReferer(request));
        if (StringUtil.isEmpty(refererHost)) {
            return false;
        } else {
            return StringUtil.equals(WebUtil.getHost(request), refererHost) ? true : controller.isSafeHost(refererHost);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值