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

安全 QA 说只允许 POST/GET 请求,其它的都不安全?

  •  1
     
  •   dog82 · 2023-07-25 16:23:55 +08:00 · 14205 次点击
    这是一个创建于 516 天前的主题,其中的信息可能已经有所发展或是发生改变。

    其它的 HTTP 方法都被评为中级风险,不整改估计过不了安全关,系统没法上线,这事如何破? 我严格要求团队遵循 restful 规范,写了一堆 PUT/Delete/BATCH

    161 条回复    2023-07-28 02:34:30 +08:00
    1  2  
    ic3z
        101
    ic3z  
       2023-07-26 07:19:34 +08:00 via iPhone   ❤️ 1
    你把首页限制下。应该可以过。
    Nazz
        102
    Nazz  
       2023-07-26 07:38:35 +08:00 via Android
    @lesismal 那种依赖 redis 的伪 jwt 也是垃圾
    Nazz
        103
    Nazz  
       2023-07-26 07:44:08 +08:00 via Android
    @lesismal restful 这种拙劣的抽象能火只能说技术领导没点眼力劲,对开发速度和运行速度有害无益
    dayeye2006199
        104
    dayeye2006199  
       2023-07-26 07:52:45 +08:00 via Android
    如果你是乙方只能把 shi 吃了,还要说好吃好吃,专业专业
    Perry
        105
    Perry  
       2023-07-26 07:58:11 +08:00
    Perry
        106
    Perry  
       2023-07-26 07:58:38 +08:00
    cnevil
        107
    cnevil  
       2023-07-26 08:33:37 +08:00   ❤️ 1
    put 和 delete 请求确实是有风险吧,只是说风险,后端配置不当的时候会被利用
    不过安全行业是这样的了,我觉得你还是做好改的准备吧
    Vindroid
        108
    Vindroid  
       2023-07-26 08:40:09 +08:00
    找的信安来评估的啊,那你想过审上线就按照他们的建议改,没得选,也别纠结。如果你想写小作文说明你们现在的做法是安全的,他们看都不会看的,只会浪费时间和金钱
    xwayway
        109
    xwayway  
       2023-07-26 08:40:49 +08:00
    @nullpoint007 #50 可能是所有端口不能用默认的,比如说 mysql 不能 3306 ,理所当然 https 不能 443 。哈哈,我司就是这种奇葩规定
    cnevil
        110
    cnevil  
       2023-07-26 08:43:23 +08:00
    顺手找了两个,没仔细看
    put:CVE-2017-12615
    delete:CVE-2022-40309
    至于你想用他跟 get 、post 请求没区别来解释,我觉得不太说的过去,虽然 get 、post 也会因为配置不当或者中间件自身问题造成一些漏洞,但是 get 和 post 是被广泛用来传递参数的,基本上能称得上是必选项,而你用的其他请求属于“可选项”,从风险管控的角度来说,get 和 post 可以叫做可接受风险
    有时候我也看着一些所谓的低危漏洞很不爽,但是,没办法
    sunamask
        111
    sunamask  
       2023-07-26 08:47:29 +08:00
    歪个楼嘻嘻。

    虽然完全看不懂大家在讲什么,但这种一起讨论技术问题,群策群力的感觉真的很棒。
    sunamask
        112
    sunamask  
       2023-07-26 08:47:48 +08:00
    歪个楼嘻嘻。

    虽然完全看不懂大家在讲什么,但这种一起讨论技术问题,抽丝剥茧
    Jtyczc
        113
    Jtyczc  
       2023-07-26 08:53:29 +08:00
    @yagamil #93 只限后端 api 请求都是 post ,前端无所谓了。
    mosfet
        114
    mosfet  
       2023-07-26 09:22:50 +08:00
    1. 经验主义
    2. 让你们整改对他而言没有任何坏处,还显得“专业”
    dj721xHiAvbL11n0
        115
    dj721xHiAvbL11n0  
       2023-07-26 09:26:07 +08:00
    redsun368573607
        116
    redsun368573607  
       2023-07-26 09:26:36 +08:00
    弄个反带中间改协议吧
    f14g
        117
    f14g  
       2023-07-26 09:47:16 +08:00 via Android
    这种烂规定也就政府、国企有吧?
    什么山炮规定,恶心
    cexgwent
        118
    cexgwent  
       2023-07-26 09:56:57 +08:00
    安全就安全,有几把 QA 什么事,看你也是个二把刀,狗屁不通的
    wheat0r
        119
    wheat0r  
       2023-07-26 10:09:46 +08:00
    实际上很多 WAF 默认策略就是把 POST 和 GET 以外的请求方式列为中风险。
    5sheep
        120
    5sheep  
       2023-07-26 10:40:49 +08:00
    交付过 N 多个项目,个人认为
    restful 新增的的几个谓词 虚头八脑的玩意。

    url 命名完全可以替代他,还比他更易读。 /book/getById/5 /book/deleteByName/6 /book/translateAll

    谓词只用 get post 就可以了。
    get 说明是 url 传参
    post 说明 body 里有数据
    YuuuuuuH
        121
    YuuuuuuH  
       2023-07-26 10:46:56 +08:00
    @Nazz #102 请教一下, 如果不依赖存储,OAuth2 如何实现 revoke 呢?
    Tink
        122
    Tink  
       2023-07-26 10:48:01 +08:00
    有这种说法
    Huelse
        123
    Huelse  
       2023-07-26 11:48:08 +08:00
    因为以前 form 表单只支持 get 和 post ,一些代理服务器的安全策略会屏蔽这些请求,上 cdn 后这些请求类型可能要额外处理,以前的一些浏览器不支持等
    smallWang
        124
    smallWang  
       2023-07-26 11:59:01 +08:00
    restful 规范 大家都在用么 , 我一直 post 一把梭🤔,post 真香
    sankooc
        125
    sankooc  
       2023-07-26 13:35:24 +08:00
    post + http code 200 只是配合没见识的同事而已
    asyncd
        126
    asyncd  
       2023-07-26 13:46:55 +08:00
    @workshop #62 哈哈哈哈哈哈哈哈哈哈哈
    xuecat
        127
    xuecat  
       2023-07-26 13:58:06 +08:00
    @infactory 我不认同你的说法,亚马逊云服务器内部就很多 patch ,put 。推特也有 patchput ,为此还诞生了 graphql 。这能上大项目啊
    ooQAQoo
        128
    ooQAQoo  
       2023-07-26 14:00:34 +08:00
    @dog82 外部团队来做的评估一般就是用通用的一些规范条例来套你们这个项目,说得更简单点就是钱没花够或者对方的水平也就如此,采用一刀切的方式来做项目
    chairuosen
        129
    chairuosen  
       2023-07-26 14:17:10 +08:00
    学汤姆克鲁斯,换一个安全团队
    laiwei
        130
    laiwei  
       2023-07-26 14:20:20 +08:00
    你给安全说,POST 、GET 也不安全。
    nekoneko
        131
    nekoneko  
       2023-07-26 14:33:01 +08:00
    这真是守旧的安全团队啊
    说不好听就是垃圾团队
    nekoneko
        132
    nekoneko  
       2023-07-26 14:35:54 +08:00
    @workshop #62 你是活在十几年前的原始人吗
    Mac0ne
        133
    Mac0ne  
       2023-07-26 14:56:16 +08:00
    OPTIONS 可以探测服务器资源 DDOS 攻击你呢?
    DELETE 可以发送删除命令,删你数据呢?
    HARD 其实没啥卵用
    PUT 可以从客户端传送数据取代指定的文档内容,被篡改呢?
    TRACE 回显服务器请求,作为管理员的你需要通过 web 去显示该内容?
    Mac0ne
        134
    Mac0ne  
       2023-07-26 14:57:36 +08:00
    @laiwei 说明你根本就不懂安全,你考虑过运维的感受吗?
    liyhu
        135
    liyhu  
       2023-07-26 14:59:08 +08:00
    都行
    KingHL
        136
    KingHL  
       2023-07-26 15:16:37 +08:00
    @5sheep 赞同
    DesnLee
        137
    DesnLee  
       2023-07-26 15:16:57 +08:00
    @Mac0ne #133 ?
    blackshow
        138
    blackshow  
       2023-07-26 15:23:49 +08:00
    这是具有中国特色的 Restful 初级阶段
    hefish
        139
    hefish  
       2023-07-26 15:26:01 +08:00
    开端口也不安全,接网线也不安全,通电也不安全。。。
    EchoGroot
        140
    EchoGroot  
       2023-07-26 15:43:22 +08:00
    @baiyi #54 感觉你的评论没有什么意义(除了让人不适),就像楼主遇到的信安团队一样,只说结论,不提依据
    infactory
        141
    infactory  
       2023-07-26 16:40:44 +08:00
    @xuecat 用 patch put 并不就是 restful ,graphql 更是和 restful 毫不相干。
    何况,如果一个业务系统的 api 不是全都遵守 restful 规范,这说明了 restful 是失败的,是局限的,是不适用于复杂业务系统的。
    baiyi
        142
    baiyi  
       2023-07-26 16:45:31 +08:00
    @EchoGroot #140 我以为他查一下 rest 的作者,就能明白 http 的设计可不是从 webdav 那抄来的,结果他给我回复的文章可能他自己都没仔细看,就得出个 restful 是抄袭 webdav http method 的结论。
    毕竟嘴贱问了,又不好不回,但真要计较,回复太多又嫌累。是我的错,下次不回了
    brader
        143
    brader  
       2023-07-26 16:48:03 +08:00
    入行开始我就把 restful 踢一边了,只用 post/get ,我写的接口一般支持这 2 种,但是我不告诉前端,get 方式都是我自己调试方便偷偷用
    zpf124
        144
    zpf124  
       2023-07-26 17:08:07 +08:00
    @Mac0ne
    你提到的几个方法里,OPTIONS HEAD 这些几乎标准后端默认都支持,但你说可以用来 DDOS ,那 GET 不也一样可以,而且效果还更好。

    PUT 、DELETE 、TRACE 又都不是标准 http 服务会默认提供标准行为模式的方法,甚至老实说 TRACE 我都实际当中没用过,许多 http 软件都完全不支持这玩意。

    不要觉得全世界所有人用这几个方法都是去搞 WebDAV 服务了,觉得这几个会影响安全,那只能说你们运维是真的水。



    我们项目有以下几个接口,麻烦你分析一下哪个会产生篡改数据的风险,哪个会产生数据删除的风险,哪个会影响服务器上的磁盘文件:

    DELETE /api/users/{id}
    PATCH /api/system/info
    PUT /api/stations

    如果这几个接口有风险, 那请问,以下接口为什么在你的认知里就是安全的,当然如果你认为以下接口也不安全,那麻烦给出整改意见:

    POST /api/delUser?id={}
    POST /api/system/updateInfo {a:1,b:2}
    POST /api/station/addStation {name:'xx',desc:'abc'}
    zpf124
        145
    zpf124  
       2023-07-26 17:15:41 +08:00
    @baiyi 你不回最好,减少了这个世界上的无用信息和戾气。

    要不是后面另一个哥们指出了我的错误,我缓和了一下心情给他先点了个赞,我也不可能维持一个好心情给你也施舍一个赞。
    u20237
        146
    u20237  
       2023-07-26 17:21:57 +08:00
    如果一个狗洞只允许 dog 通过,那就重开把,变成 dog 再通过。

    rm -rf /home
    then
    create a user
    0x20H
        147
    0x20H  
       2023-07-26 17:22:36 +08:00
    HTTP PUT 请求方法创建一个新的资源或用请求的有效载荷替换目标资源的表示
    HTTP DELETE 请求方法用于删除指定的资源。

    HTTP GET 方法请求指定资源的表示
    HTTP POST 方法发送数据给服务器

    各位想的好复杂,看不懂了。

    PUT 和 DELETE 这两个方法的功能确实存在直接威胁,GET 和 POST 的方法不会存在直接威胁呀。PUT 和 DELETE 方法进行安全处理后,确实会避免发生威胁事件,但这不在外部安全团队的考虑范围内(尽量避免不必要的安全隐患[图省事一刀切])。如果是内部安全团队,有预防方案,进行审核后大概率是可以放行的
    baiyi
        148
    baiyi  
       2023-07-26 17:33:02 +08:00
    @zpf124 #145 你开心就好,这次确实是我有问题,很抱歉
    proxytoworld
        149
    proxytoworld  
       2023-07-26 17:38:31 +08:00
    @shyangs 你图片里面 -d 里面有一个参数就是你上面框出来的
    shyangs
        150
    shyangs  
       2023-07-26 17:45:50 +08:00
    @proxytoworld

    那圖片的意思是 淘寶網就算 api 語義是 get ,還是用 POST 請求 (看不懂請去學 curl ),淘寶網 API 一律用 POST ,不用 RESTful ,不管語義就是 POST.
    jiangzm
        151
    jiangzm  
       2023-07-26 17:52:29 +08:00
    断网吧
    freestyle
        152
    freestyle  
       2023-07-26 20:52:43 +08:00 via iPhone
    让我想起多年以前刚出来时我也因为要 restful 跟前端 battle.
    直到我要给服务加监控时, restful path 带了参数不好统一处理上报为有意义的名字.
    直到用 rpc pb 时想通用地映射处理为 http server.

    对于纯后台接口, 还是 get post 一把梭方便. restful 的实用意义远不如统一风格的 post
    lesismal
        153
    lesismal  
       2023-07-26 21:31:35 +08:00
    > 看到 Go 社区都是这种 b 人我就放心了

    @Slurp 小子嘴巴放干净点。即使是讨论技术,你可以用观点来反驳,张嘴管别人叫 b 人 是从小家里大人不管教学校也不教吗?

    另外,你技术是有多屌?你敢保证你自己喜欢的那些东西就是好的美丽的?
    我上面提到的一众都是垃圾的东西,我都能喷出个所以然、为什么这些东西垃圾,只是喷了很多次懒得每次再打字说一遍罢了。

    既然我不喜欢的那些东西看样子你都挺喜欢,那目测你只是个搬砖的罢了。

    技术或者技术审美差也就算了,还没教养,而且还有好几个点赞的,真是一丘貉。
    lesismal
        154
    lesismal  
       2023-07-26 21:38:32 +08:00
    @Slurp

    这是我两个库:
    https://github.com/lesismal/nbio
    nbio 这个,截至目前 go 社区 poller 框架唯一支持 tls/http1.x/websocket ,poller 框架里性能也基本是不比其他任何一个低

    https://github.com/lesismal/arpc
    arpc 这个是我的 go rpc 框架,功能不只是 rpc 、支持的业务类型比 rpc 广泛得多,至于性能,你可以去看三方评测:
    https://colobu.com/2022/07/31/2022-rpc-frameworks-benchmarks

    我好奇你这种还有给你点赞的小子们都是什么技术水平和技术审美,你们回复这些内容时候自己把问题想明白了吗,你们觉得我这种是属于 b 人 的时候,你们自己对我说的那些垃圾理解到位了吗?

    本来说了不再回复这个帖子了,一上来就看到个 b 人,真是后辈可期!
    Slurp
        155
    Slurp  
       2023-07-26 22:07:18 +08:00   ❤️ 1
    @lesismal 🤣 难绷,但我起码知道 PL 十几年理论不用、用个 tuple 模拟 tagged union 反反复复 if err 是哪个语言。

    除了 CRUD 和搬砖的找不到词汇了,喷人水平也如此之低,不愧为大道至简!我也懒得和你 bb ,FrankHB 这种起码有点乐子,你是啥?写个 C++ 写个 Rust 不会,复杂点的概念理解不能,学了个 Go 所谓「大道至简」天天的在这里怼天怼地怼空气。😁 喷个 b 人都能说我没教养,那后面还有更难听的呢。

    我说你乱喷不代表我支持,上来就是稻草人谬误可见逻辑水平有多低…… 被戳到痛处就是经典话术我能写你能不能写,你写的好不好和你观点垃圾不垃圾有啥关系?没活了咬打火机吧。

    😁 反正我要驳倒你很简单,TCP 、HTTP 、RESTful 、Actor 、FP 、设计模式里随便选一个就够你吃一壶。动不动萌生「我写的比这些好十倍」的想法属于是中二和无知的表现了。你这种 AOE 还想不被喷?纯纯的是想多了。

    😁 你要喷设计模式,那我请你在 Go 里不用 Visitor 模式实现一下解析 AST 。
    😁 你要喷 FP ,那我请你了解一下 Algebraic Effects 。
    😁 你要喷 TCP ,那你先解决一下中国运营商阻塞 UDP 的问题。

    乱七八糟指责我一通「敢保证你自己喜欢的那些东西就是好的美丽的」,却没发现自己的主张多么难以落地,就连你给出的替代方案,竟然也不是那么完美。🤣
    lesismal
        156
    lesismal  
       2023-07-26 22:36:53 +08:00
    @Slurp

    > 写个 C++ 写个 Rust 不会,复杂点的概念理解不能,学了个 Go 所谓「大道至简」天天的在这里怼天怼地怼空气。

    看样子你不只是没教养,连逻辑都混乱。我都好奇了,我十几年前就在写 c/c++,因为它俩开发效率低产出慢,等你写完功能上线了市场都被别人占领完了才来搞 go ,怎么就不会 c++了。你这个逻辑推理能力是真的好强啊!

    > 😁 喷个 b 人都能说我没教养,那后面还有更难听的呢。

    你随口说别人是 b 人,并且表情还这么欢乐戏谑,那正好证明我说你没教养的逻辑是正确的呀。后面还有什么你尽管讲出来好了,我也乐于见识一下你素质到底有多低

    > FrankHB 这种起码有点乐子

    幻 他活在自己的语言律师的乐子里,这是他的自由。但是我可从没见他像你这样随口管别人叫 b 人。先抛开技术不谈,单就幻的素质教养就比你高出很多的。至于技术,他是偏学院也好理论也好,你是什么派别也好,我这种是实践派,技术不只是你对哪些语言语法达到多高的理解就有多高的社会贡献或者价值,你要是真造了什么牛逼语言造福一个领域和一大片程序员那也是你的丰功伟绩,但如果不是,可能还不如实践派的大伙对社会贡献来得实在。

    而且既然看你口气也都是老年人了,那我也用因为觉得后辈不可期对未来失望而跟你在这生气了,最多你就是个顽古不化自以为是能玩弄一点编程语言艺术的小丑罢了,因为毕竟我没听说过哪位讲中文的大佬对某个编程语言领域做出了什么超凡脱俗的巨大贡献或者开拓。

    所以也别扯犊子那些虚头八脑的,比如你可能喜欢像跟幻讨论问题的那些话题,我是实践派,要真论什么语言语法,那你牛逼我不懂那么多,我说的那些个也不是语言本身的,懒得跟你浪费口舌😁

    > 反反复复 if err 是哪个语言。

    天下也不是只有异常系统或者 rust 的那个什么来着或者其他一些这几种姿势是唯 N 审美,你不喜欢 if err ,喜欢的人多了去了,我只见 go 越来越多人喜欢,越来越多业务交给 go 做。
    最简单的一点,那么多大厂搞它替换其他很多语言,合着你天下第一、别人那些大厂的技术大佬都不如你呗?那请你继续活在你自己的世界里自娱自乐吧,这样挺好的

    偶尔出来像这样咬一口别人也没关系,我不介意


    > 😁 你要喷设计模式,那我请你在 Go 里不用 Visitor 模式实现一下解析 AST 。
    > 😁 你要喷 FP ,那我请你了解一下 Algebraic Effects 。
    > 😁 你要喷 TCP ,那你先解决一下中国运营商阻塞 UDP 的问题。

    这逻辑就更混乱了呀,如果一个东西是垃圾,还要让我去花更多时间去深入学习理解它,这不更是在浪费我的时间吗?
    你门口遇到一坨狗屎,单观其形状颜色甚至临近被它气味熏到时就知道它是不好的了,难道你还真要上去吃几口深入研究下为什么它不好?

    我这个人非常工程实践实用主义,我只原意把时间花在那些有利于工程实践的事情上。
    所以拜托你不要以为自己读了点什么垃圾,就一定要别人也要学会这些垃圾然后再跟你讨论问题,太狭隘,太逻辑混乱!
    简直莫名其妙,十分搞笑!

    送你个词,沉没成本效应:沉没成本效应(Sunk Cost Effects)是指为了避免损失带来的负面情绪而沉溺于过去的付出中,选择了非理性的行为方式。
    因为听你的口气,自是学了不少 CS 的知识,因为投入的太多舍不得放弃,所以在那自嗨得不行。

    有这个能读明白那些垃圾知识(虽然垃圾,但毕竟也挺复杂)的智力水平,至少也是上过不错的学校,自己读瞎了却不自知,可惜了你还有和你类似的一种人了。

    😁 😁 😁
    lesismal
        157
    lesismal  
       2023-07-26 22:41:18 +08:00
    学了那么多年复杂的 CS 理论,反倒是连基本逻辑都越来越乱了,而且越来越像孔乙己。
    真是,哎,可惜,可惜了
    Slurp
        158
    Slurp  
       2023-07-26 22:58:22 +08:00
    @lesismal Go 语言爱好者,大道至简爱好者,入场!
    @FrankHB C++ 语言爱好者,语言律师,入场!
    @duangsuse Python 、JS 、绝句爱好者,民科入场!
    @skywind3000 C 语言爱好者,KCP 作者,入场!
    @baobao1270 推特小网红,运维爱好者,入场!
    @himself65 推特小网红,TypeScript 爱好者,RESTful 爱好者,入场!

    我也不说别的,我就简单召唤一下。😎
    proxytoworld
        159
    proxytoworld  
       2023-07-26 23:59:34 +08:00
    @Slurp 绷不住了,引战 18
    pocketz
        160
    pocketz  
       2023-07-27 14:16:09 +08:00
    @Slurp #158 我去,冲浪高手!(惊
    himself65
        161
    himself65  
       2023-07-28 02:34:30 +08:00 via iPhone
    @Slurp 谢谢,我们项目用的是 graphql
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   922 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 19:33 · PVG 03:33 · LAX 11:33 · JFK 14:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.