常见的受保护资源漏洞

常见的受保护资源漏洞

如何保护资源端点

XSS:

  • 跨域脚本(XSS)是开发Web应用安全项目(OWASP)的十大安全问题名单中的第三名,是目前最普遍的Web应用安全漏洞。它通过将恶意脚本注入到可信的网站来绕过访问控制机制。因此攻击者可以通过注入脚本来改变Web应用的行为,以达到他们的目的,比如收集数据,让攻击者能够冒充经过身份认证的用户

资源服务代码

    app.get("/helloWorld", getAccessToken, function(req, res){
        if(req.access_token){
            if(req.query.language == "en"){
                res.send('Hello World');
            } else if (req.query.language == "de"){
                res.send("Hallo Welt");
            } else if (req.query.language == "it"){
                res.send("Ciao Mondo");
            } else if (req.query.language == "fr"){
                res.send("Bonjour monde");
            } else if (req.query.language == "es"){
                res.send("Hola mundo");
            } else {
                res.send("Error, invalid language: " + req.query.language)
            }
        }
    });

攻击者可以构建指向受保护资源的URI攻击受保护资源

    http://localhost:9002/helloWorld?access_token=TOKEN@language=<script>alert('XSS')</script>

受害者点击这个连接,JavaScript代码将会执行

解决方案:

  • 合理地转义过滤所有不可信的数据,比如URI编码等
  • 利用Content-Type,让受保护资源返回正确的媒体类型。Content-Type这个实体头部字段表示发送给接受者的实体正文的媒体类型,或者在使用HEAD方法情况下,表示GET请求将会得到的响应的媒体类型。比如:使用application/json
  • X-Content-Type-Options: nosniff,除Mozilla Firefox,所有浏览器都支持,这个安全头部字段是由IE浏览器引入,它的作用是防止在没有声明Conten-Type的情况下执行MIME嗅探
  • X-XSS-Protection,它的作用是自动启用当前大多数浏览器内置的XSS过滤器(Mozilla Firefox同样不支持)。0:禁用XSS保护,1:启用XSS保护,1;mode=block:启用XSS保护,并在检查到XSS攻击时,停止渲染页面

同源策略

浏览器的不同窗口要相互访问安全上下文,必须具有相同的基础URL,基础URL的构成是protocol://domian:port(IE浏览器没有将端口算入同源组件)。同源策略的目的是防止一个页面中的JavaScript代码从另一个域加载恶意内容。为了能加载跨域资源,我们可以使用W3C规范中的方案:跨域资源共享(CORS)

    var cors = require('cors');

然后将该函数作为过滤器添加到其他函数前面。通过支持HTTP OPTIONS 方法支持,让JavaScript客户端在不执行完整请求前提下获取CORS头部在内的重要HTTP头部

    app.options('/helloWorld',cors());
    app.get('/helloWorld', cors(), getAccessToken, function(req, res){

    })

通过跨域共享为同源策略开放了一个可控缺口,但对于有用户交互的页面和表单,则应该关闭这一特性

令牌重放

通过设置访问令牌相对较短但生命周期,可以降低令牌重放风险,即使攻击者得到访问令牌,但访问令牌已经过期,攻击的危害程度就会降低。OAuth 2.0没有对加密方法做出要求,它的连接中都完全依赖传输层安全协议(TLS),因此在OAuth生态系统中尽可能强制使用TLS被认为是最佳实践。使用HTTP严格传输安全(HSTS),让Web服务器能够声明浏览器在与它交互时必须使用安全的HTTPS链接,而不允许使用不安全的HTTP协议。往端点添加HSTS

    res.setHeader('Strict-Transport-Security', 'max-age=31536000')

现在,每次在浏览器中通过HTTP访问端点,浏览器都会执行一个内部307重定向。这样能防止任何意外的未加密通信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值