• tt
    2019-12-25
    首先向老师请教一个问题: 从hacker.com向bank.com发起HTTP请求不会遇到同源策略的限制么?

    其次谈谈自己对CSRF的理解。

    CSRF攻击的两个基本条件:使用cookie进行身份认证,接口调用参数不包含任何隐私信息。我的理解是一旦身份(即cookie)被窃取,因为接口参数不包含任何隐私信息和一次性信息(如nounce),本质上黑客执行的是一次重放攻击。

    一次性或随机性信息包括CSRF Token,也包括不在浏览器控制范围之内的信息,如独立的支付密码。

    回到用户认证的三个层次,除了Cookie这个能证明你是谁的东西之外,还要问用户你拥有什么?(比如支付密码或电子口令牌的口令)

    此外,一次性或随机信息是针对攻击者而言的。只要攻击者无法猜测到的信息,都应该被使用,就像SSRF防护中,内网的接口服务也需要对请求进行验证。

    通过这一课,对于接口设计的认知更全面了。
    展开

    作者回复: 会,所以是通过form.submit的POST形式,跳转过去的。黑客并拿不到返回的结果。

     1
     5
  • 瑞泉
    2019-12-29
    老师,csrf xss sql注入这些Web安全有没有比较好的测试工具推荐?后续课程中会有工具介绍吗?

    作者回复: 你好,感谢你的留言。xss可以用beef。sql注入可以用sqlmap。csrf好像没听说过,从原理上来说,也不容易做自动化的检测。
    这类工具主要是如何发起攻击,不是本专栏的重点,因此不会做介绍,感兴趣可以自行了解。

    
     2
  • LEON
    2019-12-25
    请教老师一个问题,通过CSRF token 来进行防护的话,有没有可能黑客通过自己转账确认CSRF token的位置或者标识,然后进行CSRF模拟表单进行提交的时候,通过JS脚本把CSRF token取出来,加在黑客模拟的表单中发送给server。从而造成CSRF token 防护失效?
    谢谢老师

    作者回复: CSRF token每个人每次请求都不一样,提前拿没有意义。如果黑客能够拿到用户的token,说明已经通过XSS等控制了用户的浏览器,则没有CSRF的意义了。

    
     2
  • 小晏子
    2019-12-25
    目前还没遇到过CSRF和SSRF的攻击,首先对于CSRF攻击,主要是使用CSRF-token进行防护的,这个很多web框架都提供了现成的模块可供使用。对于SSRF主要是用了白名单和接口认证的方式,文中提到的一个方案:全部使用POST,也考虑过,可是很多人认为这种方式可奇怪,不好理解,所以就没用。
    这里也请教下老师,接口全部使用POST请求的这种方式在业界是否用的普遍?

    作者回复: 敏感的上行操作全部使用POST,既符合GET和POST本身的设计初衷,也能够提升安全性,所以还是挺普遍的。

    
     1
  • Middleware
    2019-12-25
    尽量使用 POST 请求方式,似乎不太好吧?有违 RESTFul

    作者回复: 嗯,有些绝对了。应该是上行操作都用POST

    
     1
  • ZeroIce
    2019-12-25
    老师我有个问题不太懂:现在很多接口安全机制,不可能仅仅是直接访问一个接口而不带header验证(例如:cookie)就可以成功。不需要验证,还不如直接通过postman直接请求呢。这样子的话黑客怎样实施csrf?用户身份(cookie或token)黑客怎样添加到表单里面?

    作者回复: 用浏览器发起请求,会自动带上cookie的。

    
     1
  • 律飛
    2020-01-04
    对于CSRF攻击,主要是使用CSRF-token进行防护的,这个很多web框架都提供了现成的模块可供使用;对于支付、修改用户密码等关键操作采用手机验证码等二次验证。
    对于SSRF主要是用白名单和接口认证的方式,还可以采用协议限制。
    请教老师,作为运维人员,除了用工具扫描漏洞外,在日常运维监控方面可以做些什么来发现是否有入侵事件呢?

    作者回复: 后面会讲到一些防护工具。Web安全相关的主要就是WAF了

    
    
  • 小老鼠
    2019-12-31
    csrf经常遇到,ssrf第一次听到。我用过django的csrfmiddware控件,利用的就是csrftoken,由于我作自动化测试的,在作接口测试的时候,发现只要把csrftoken的值与form中的csrfmiddlertoken的hidden类型值保持一致就可以通过了。我发现cdrftoken是不安全的。

    作者回复: 并不是不安全,而是因为你自己可以拿到自己的csrf token,所以可以通过token的校验。而对于黑客来说,他只能够控制你的浏览器去发起请求,无法拿到存储的cookie,所以是拿不到csrf token的。

     2
    
  • leslie
    2019-12-30
    CSRF的防御方式算是提前学习到了:正准备做相关的事情,之前不理解为何现在许多现金支付为何越来越多的使用手机验证;其实目的就是避免该环节用户的密码和支付密码被保存从而被利用。

    作者回复: 是的。支付密码的意义,除了防CSRF这类攻击,其实也是一定程度上强化用户对密码的保护意识。支付密码其实强调了说这个密码和普通密码意义不一样,因此用户一般只在脑子里面记忆,不会轻易写下来。

    
    
  • 早起不吃虫
    2019-12-26
    老师总结的很好,不过由于篇幅所限,讲的稍显不够详细,所以看到评论区有很多相关的疑问,建议增加篇幅,哈哈😄

    作者回复: 篇幅确实有限,对很多内容进行了删减。有不明白的欢迎留言讨论~

    
    
  • 仰望星空
    2019-12-25
    如果csrf toke也存储在cookie里是不是就不安全了,但奇怪的是spring security 框架就是把card token存储在cookie里返回给浏览器的,似乎也没人说不安全。

    作者回复: 存cookie里面是不安全了。你说的card token是干啥用的?不太了解。

     1
    
  • LEON
    2019-12-25
    感觉XSS攻击和CSRF攻击很像,这两种攻击比较起来具体有什么关系和区别吗?

    作者回复: XSS攻击发生在当前域名,CSRF攻击发生在其他域名。总体来说,XSS攻击能够覆盖CSRF的危害,但XSS难度更好,传播能力更弱。

    
    
  • 稳
    2019-12-25
    想请假老师个问题,前后端分离项目中,怎样做csrf?如果通过接口返回,是不是黑客也可以额外做一次接口请求呢?

    作者回复: 做好同源保护,黑客没办法在其他域名下,拿到用户在当前域名下的接口返回结果。然后,把token和session等会话标识绑定即可。

    
    
  • alan
    2019-12-25
    讲得太好了!
    
    
  • Cy23
    2019-12-25
    CSRF了解了,SSRF攻击原理理解了,SSRF发起攻击的细节还有很多不了解的,需要扩展学习下

    作者回复: SSRF其实就是看,通过HTTP请求,都能从内网获取些什么信息。

    
    
  • ZeroIce
    2019-12-25
    上一条留言:
    老师我有个问题不太懂:现在很多接口安全机制,不可能仅仅是直接访问一个接口而不带header验证(例如:cookie)就可以成功。不需要验证,还不如直接通过postman直接请求呢。这样子的话黑客怎样实施csrf?用户身份(cookie或token)黑客怎样添加到表单里面

    另外一个问题:假如我的是Authorization。 header头部验证?而不是cookie(浏览器每个请求都带上cookie)

    作者回复: 浏览器发起请求,会自动带上这个请求域名的cookie,所以黑客不需要主动添加。。。。看浏览器怎么处理认证了,我理解Basic Auth浏览器应该也是会自动带上的,吧?

    
    
我们在线,来聊聊吧