美文网首页web&Request安全
Web开发中的 XSS、CSRF/XSRF、CORS

Web开发中的 XSS、CSRF/XSRF、CORS

作者: 小丸子的呆地 | 来源:发表于2021-06-10 13:39 被阅读0次

XSS

跨站脚本攻击

向正常网站的表单中注入恶意脚本代码,窃取网站私有内容,比如窃取cookies、localstorage、sessionstorage的内容。

防御策略

设置cookies为HttpOnly 使cookie不可被js读取操作。

CSRF/XSRF

跨站请求伪造

诱导用户在恶意网站内点击链接,链接请求正常网站的功能业务,会自动携带正常网站的cookies,在用户不知情的情况下完成一些操作。

防御策略
  1. 健强服务端逻辑,严格restful风格,可以防御一些低端的攻击。
  2. 利用请求头中的refer内容,refer是浏览器在发起请求是设置的当前请求来源网站的信息,可以防御绝大部分的攻击。
  3. 每次请求需要用户填写验证码,可以防御所有攻击,当然这种方式体验太差。
  4. x-xsrf-token,在发起请求前由前端从cookie中读取一个随机token,这个token可能是之前种下的,写到header中,因为只有同一个域下的js才能访问cookie(未设置httponly的),可以防御所有攻击。

CORS

Cross-origin resource sharing 跨域资源共享
  1. 对于客户端,我们还是正常使用xhr对象发送ajax请求。
    唯一需要注意的是,我们需要设置我们的xhr属性withCredentials为true,不然的话,cookie是带不过去的哦,设置: xhr.withCredentials = true;
  2. 对于服务器端,需要在 response header中设置如下两个字段:
    Access-Control-Allow-Origin: [http://www.yourhost.com]
    Access-Control-Allow-Credentials:true
    这样,我们就可以跨域请求接口了。
public class CrossFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
        HttpServletResponse httpServletResponse = (HttpServletResponse) response;
        String origin = httpServletRequest.getHeader("origin");
        if (StringUtil.isNotBlank(origin)) {
            httpServletResponse.setHeader("Access-Control-Allow-Origin", origin);
            httpServletResponse.setHeader("Access-Control-Max-Age", "600");
            httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true");
            if (httpServletRequest.getMethod().equalsIgnoreCase("OPTIONS")) {
                httpServletResponse.setStatus(200);
                httpServletResponse.setHeader("Access-Control-Allow-Methods", "OPTIONS, GET, PUT, POST, DELETE");
                httpServletResponse.setHeader("Access-Control-Allow-Headers",
                        "x-requested-with, accept, origin, content-type");
                httpServletResponse.setHeader("Content-Type", "application/json;charset=utf-8");
                return;
            }
        }
        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {

    }
}
  1. jsonp访问跨域资源

相关文章

  • Web开发中的 XSS、CSRF/XSRF、CORS

    XSS 跨站脚本攻击 向正常网站的表单中注入恶意脚本代码,窃取网站私有内容,比如窃取cookies、localst...

  • csrf以及ssrf

    什么是csrf csrf通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但...

  • SSRF与CSRF

    什么是csrf csrf通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但...

  • CSRF攻击

    CSRF叫做跨站请求伪造攻击,也有叫XSRF的,其实都差不多,你也可以认为是XSS和CSRF的结合。对于这个攻击原...

  • Web Form ValidateAntiForgenToken

    ValidateAntiForgenToken的目的是为了防止XSRF/CSRF攻击,Web Form 没有这类的...

  • 浅说 XSS 和 CSRF

    在 Web 安全领域中,XSS 和 CSRF 是最常见的攻击方式。本文将会简单介绍 XSS 和 CSRF 的攻防问...

  • 面试常问到的跨域,了解一下?

    一、什么是跨域,为什么会出现跨域问题。 前面两篇文章cookie了解一下?,网络攻防(xss/csrf/xsrf)...

  • xss攻击和csrf/xsrf攻击

    xss攻击 XSS(Cross Site Scripting), 跨站脚本攻击,是发生在目标用户的浏览器层面上,当...

  • 网络攻防(xss,CSRF/XSRF)了解一下?

    CSRF/XSRF:一、什么是CSRF?CSRF(cross-site request forgery) 跨站请求...

  • SOP、CORS 和 CSRF、XSS

    原文地址:https://alphahinex.github.io/2021/05/23/sop-cors-csr...

网友评论

    本文标题:Web开发中的 XSS、CSRF/XSRF、CORS

    本文链接:https://www.haomeiwen.com/subject/enueeltx.html