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

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

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

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

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


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

    https://ex.noerr.eu.org/t/1056504?p=1#reply269
    ZeekChatCom
        20
    ZeekChatCom  
       2024-07-17 10:09:54 +08:00
    @raviscioniemeche 所以呢?
    ZeekChatCom
        21
    ZeekChatCom  
       2024-07-17 10:20:07 +08:00
    csrf ?那怎么又有简单请求和非简单请求呢?楼主你在说什么?
    justdoit123
        22
    justdoit123  
       2024-07-17 10:26:05 +08:00
    我认为是可以的。如果请求允许 PUT ,那么就无法在浏览器端构建出 CSRF 攻击。

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

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

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