V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
drymonfidelia
V2EX  ›  信息安全

把所有 POST 请求都换成 PUT,不返回允许非同源请求的响应头,是否就不需要考虑 CORS 攻击了?

  •  1
     
  •   drymonfidelia · 52 天前 via iPhone · 5067 次点击
    这是一个创建于 52 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  52 天前
    是 CSRF 攻击,打错了
    42 条回复    2024-07-18 10:41:48 +08:00
    harryWebb
        1
    harryWebb  
       52 天前
    如果从非主流的角度讲。。。确实是这样的
    毕竟很多黑客攻击只是针对特定情况下的扫描,扫描到了才会进行下一步渗透
    你直接不按常理出牌,估计除非是针对性的,不然肯定就可以忽略了
    CodeCodeStudy
        2
    CodeCodeStudy  
       52 天前
    不是吧,CORS 保护的是浏览器,跟什么请求方法没有关系啊
    drymonfidelia
        3
    drymonfidelia  
    OP
       52 天前 via iPhone
    @CodeCodeStudy dorm 表单不能提交 put
    drymonfidelia
        4
    drymonfidelia  
    OP
       52 天前 via iPhone
    form 打错了
    Ayanokouji
        5
    Ayanokouji  
       52 天前
    建议重新看下 cors 那篇帖子
    drymonfidelia
        6
    drymonfidelia  
    OP
       52 天前 via iPhone
    @Ayanokouji 不发跨域响应头+非 get/post 就不是简单请求
    lambdaq
        7
    lambdaq  
       52 天前
    这个思路。。。6 。。。。。
    paopjian
        8
    paopjian  
       52 天前
    我学艺不精,不太清楚 CORS 攻击,这好像就是封闭本服务器啊,也就是不返回 Access-Control-Allow-Origin,只自己玩不让别的网站请求,和有没有 PUT 关系不大
    drymonfidelia
        9
    drymonfidelia  
    OP
       52 天前 via iPhone
    别人网站请求你网站非简单请求会先预检,你对预检请求不返回 Access-Control-Allow-Origin 就通不过预检,实际请求无法发送
    elboble
        10
    elboble  
       52 天前
    cors 攻击和 put ,post 没直接关系吧
    dzdh
        11
    dzdh  
       52 天前
    CORS 不存在"攻击"吧。

    服务端直接对你发起请求,那你怎么做都没用

    浏览器对你发起请求,只要你不返回对应头,那请求也根本发不成功,也没什么用。


    除非你特意设置,允许跨域。否则,你就是不允许,那浏览器就不会给你发跨域请求。
    elboble
        12
    elboble  
       52 天前
    我是记得原来讨论是不是所有请求都变成 post ,过滤其他所有行为才是最安全。
    helone
        13
    helone  
       52 天前   ❤️ 4
    你想说的是不是 CSRF 攻击
    belin520
        14
    belin520  
       52 天前
    所以 CORS 那个帖子居然说对了
    ramirezyolis808
        15
    ramirezyolis808  
       52 天前
    这种其实就是 Access-Control-Allow-Origin 设置不合理,导致用户在访问恶意网站的时候,浏览器会偷偷发起对受害网站的访问,从而实现盗取个人敏感信息或者刷票等行为。
    raviscioniemeche
        16
    raviscioniemeche  
       52 天前   ❤️ 6
    上面分两拨人,一拨是在思考 cors 跨域为什么会有攻击,一拨在思考 put 请求为什么就不会造成 csrf 攻击,这个帖子成功把 cors 和 csrf 混在了一起,只能说世界就是个草台班子...
    raviscioniemeche
        17
    raviscioniemeche  
       52 天前
    @ramirezyolis808 你要不先看看你在说什么
    fiveStarLaoliang
        18
    fiveStarLaoliang  
       52 天前
    哈哈哈哈哈,鸡同鸭讲
    shadowyue
        19
    shadowyue  
       52 天前
    该继续宣传草台班子理论了😂

    https://www.v2ex.com/t/1056504?p=1#reply269
    ramirezyolis808
        20
    ramirezyolis808  
       52 天前
    @raviscioniemeche 所以呢?
    ramirezyolis808
        21
    ramirezyolis808  
       52 天前
    csrf ?那怎么又有简单请求和非简单请求呢?楼主你在说什么?
    justdoit123
        22
    justdoit123  
       52 天前
    我认为是可以的。如果请求允许 PUT ,那么就无法在浏览器端构建出 CSRF 攻击。

    但是,这种防御方式有点自损八百的感觉。

    另外,我心中也有一个疑惑,为什么有的人要把 CSRF token 存放到 session 里?我感觉这种绑定的意义不大,还增加服务的负担。
    loveuer
        23
    loveuer  
       52 天前
    那实际上 http 是支持 自定义 method 的,不是更那个啥一点?
    FrankFang128
        24
    FrankFang128  
       52 天前
    你说的是跨站点请求伪造,不是跨域哈。
    darksword21
        25
    darksword21  
       52 天前
    我现在脑子很乱,你们能不能不要再发 cscs 的帖子了
    darksword21
        26
    darksword21  
       52 天前
    zeromake
        27
    zeromake  
       52 天前
    CSRF 不是用来偷 cookies 请求 GET 的吗,不是应该拒绝所有 GET 请求?但是现在 http GET 请求有很多特性( cdn 缓存,浏览器缓存),不是那么好替代的……
    wonderfulcxm
        28
    wonderfulcxm  
       52 天前 via iPhone
    这个帖子看得好喜感😅
    kwater
        29
    kwater  
       52 天前
    CORS 是君子协定,只服务理想环境。
    真实世界的攻击不受限 CORS ,可能要真正研究的方向是 CSRF 、重放攻击这些
    Terry05
        30
    Terry05  
       52 天前
    这么多打错。。。
    deplives
        31
    deplives  
       52 天前
    看标题看的我一愣一愣的,愣是没想通跨域能发起啥攻击。
    看楼中评论竟然还一本正经的讨论起来了,后来发现 你说的其实是 CSRF
    连 CSRF(跨站伪造请求) 和 CORS (跨域) 都分不清,就别发起讨论了。
    kkk9
        32
    kkk9  
       52 天前   ❤️ 2
    @fiveStarLaoliang #18 @shadowyue #19 像极了甲方乙方开对接会议😆😇😇😇
    hahiru
        33
    hahiru  
       52 天前
    朕决定了,荣登大宝之后一定要把该死的首字母缩写都砍了。
    DOLLOR
        34
    DOLLOR  
       52 天前   ❤️ 2
    其实 HTTP 方法不一定是 GET 、POST 、PUT 、HEAD 、OPTIONS 这些,你完全可以凭喜好自定义一个偏门的单词作为请求方法。🤣

    https://imgur.com/66sccjK
    lovelylain
        35
    lovelylain  
       52 天前 via Android
    post 换成 put 有什么区别?
    justdoit123
        36
    justdoit123  
       52 天前
    @lovelylain 浏览器为了向后兼容,依然允许表单构建的请求进行跨域。而表单请求只有 GET/POST 两种 method 。这种请求,是有办法自动带上目标网站的 Cookie 的,从而实现 CSRF 攻击。
    lovelylain
        37
    lovelylain  
       52 天前 via Android
    @justdoit123 明白了,谢谢
    euronx
        38
    euronx  
       52 天前
    CSRF 和 put 有啥关系?
    oyps
        39
    oyps  
       52 天前
    避免 CSRF 攻击的方法:
    1. 避免在 GET 请求中进行状态改变操作
    2. 避免直接根据 URL 参数执行敏感操作
    3. 增加 CSRF token 校验,确保请求合法
    4. 设置允许访问的来源白名单
    NUUUUULL
        40
    NUUUUULL  
       51 天前
    单浏览器维度不允许跨域就会有跨站请求
    NUUUUULL
        41
    NUUUUULL  
       51 天前
    单浏览器维度不允许跨域就不会有跨站请求
    echoZero
        42
    echoZero  
       51 天前
    参考 OWASP csrf 攻击防御 https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#disallowing-simple-requests
    合理的利用 CORS 预检请求,确实是一种防御方式。但是必须要保证 cors 的配置正确性
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1058 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:23 · PVG 07:23 · LAX 16:23 · JFK 19:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.