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

2023-07-25 16:23:55 +08:00
 dog82

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

14194 次点击
所在节点    Java
161 条回复
raycool
2023-07-25 16:49:42 +08:00
建议全部 post 一把梭
w8123
2023-07-25 16:51:33 +08:00
只有我觉得 restful 规范不行嘛,在协议上用一堆方法,不够麻烦的,get/post 一把梭多好
gam2046
2023-07-25 16:51:49 +08:00
以我对接过一些国企的经验来看,整改就完事。

和对方抬杠毫无意义,甲方需要第三方出具合格的报告,第三方依据的一些国标或者甲方内部的安全审计标准来的,无条件服从就行了。第三方甚至能告诉你哪里不合格已经很 nice 了,有些刁民只说不合格,但是不告诉你原因,全靠猜。

赚钱嘛,不寒掺。任何规范都需要为赚钱让路。
dog82
2023-07-25 16:54:27 +08:00
@gam2046 我估计最终得整改,不过我想挣扎一下
liuidetmks
2023-07-25 16:54:48 +08:00
月经贴
k9982874
2023-07-25 16:57:56 +08:00
不能无视的话,前面套层网关,请求全用 post ,路由和参数全放 body 里,在网关重新解析转发到业务 service
Nazz
2023-07-25 17:00:26 +08:00
反问他为什么 PUT/DELETE 不安全, 和 GET/POST 有什么区别
justNoBody
2023-07-25 17:02:23 +08:00
这个问题我在 v 站都看到好多次了,OP 可以搜一下帖子能找到靠谱的原因。
凭我的记忆,印象中是因为多年前 IIS 导致的这些 QA 公司认为非 POST 和 GET 请求不安全。
但是甲方爸爸并不懂这些,他们也不在乎,反正让你改你就改,你除了改没有别的办法。

把前端所有的 PUT/DELETE/PATCH 都改成 POST (一般来说前端请求方法都是统一的,所以实际上应该只需要改几行代码就可以了),在 header 中增加一个自定义属性,后台转一下,后台代码就不用改了。
如果是用的 spring ,增加一个`OncePerRequestFilter`实例就可以了
drvDPqg5nO7kZWhv
2023-07-25 17:02:59 +08:00
@k9982874
我想到了发财之路,开发一套 js 和网关来卖, 前端集成这个 js ,然后到适配器网关,然后还原成原来的请求。专门解决这种“安全的项目”的痛
janzwong
2023-07-25 17:03:49 +08:00
应该是合规侧有强制要求,因为除 GET 、POST 之外的方法都存在一定安全隐患,例如 OPTIONS 可以查询支持的方法,比方说支持 PUT ,但是 apache 存在有关 PUT 方法上传 webshell 或任意文件的漏洞(像是 CVE-2017-12615 诸如此类的漏洞),所以安全 QA 才会有这样的要求。
githmb
2023-07-25 17:08:00 +08:00
不允许 HEAD 吗?
raysonx
2023-07-25 17:10:24 +08:00
http 的各种 verb 只有拼写上的不同。历史上有些应用(比如 IIS 的 webdav )使用了某些 verb 且实现上存在漏洞,被某些安全规范给一刀切了
xshell
2023-07-25 17:14:16 +08:00
post 一把锁。
dog82
2023-07-25 17:16:58 +08:00
@xshell 我终于知道为啥有些项目 POST 一把梭哈了,原来还喷他们不动 restful 规范,现在自己吃亏了才知道疼
zpf124
2023-07-25 17:18:18 +08:00
楼主的问题我们也遇到过,但你们的 QA 估计就只会背八股文,知其然不知其所以然,实际上是 WebDAV(对小白)不安全。
restful 是 作者发现人家 WebDAV 搞的这套 http method 很符合他的想法,所以复用(偷)了他们定义的 http method 而已,仅此而已,实际两者没什么关系。



而安测会将这个提示为风险的实际原因是针对小白的规则拦截导致被 AOE ,根本原因是有些小白用 IIS 或者其他一键脚本开启了 WebDAV 服务但没做鉴权,效果就和允许匿名的 FTP 服务一样,导致文件被脚本小子加密或者删除。


我们是某个合作的甲方人家找的安测出的报告里包含 “中风险漏洞: 使用 PUT ,http method”, 不过人家给的报告还包含里处理建议/参考, “打开服务设置,选择 IIS 服务器,关闭 WebDAV 服务”,所以我们一看就明白了

另外我们的要求只是高危漏洞必须处理,其他的可以商量,所以我们就解释说明了一下就 ok 了,如果你们的安测是甲方
的而且道理说不通,要求必须按规定,按他们原有的测试脚本,那你只能投降了。



-------------------------------

最后如果楼主只能改了,那也不算非常麻烦,spring 有个拦截器可以把 POST( "xxx/api", {"_method":"put"}) 转换识别为 put 请求,这样整体后端代码就不用改了。
前端呢也可以将 http 工具再封装一下, 把其他 method 改成 post + _method 参数的方式。
flyqie
2023-07-25 17:21:00 +08:00
post + http code 200

这是最稳的方案,restful 那一套在某些场合非常容易出你这种问题。。

鬼知道他们会用什么奇奇怪怪的玩意。。
zhangxh1023
2023-07-25 17:22:47 +08:00
如果你是作为乙方,帮甲方做项目,而安全是甲方提出的要求
那么,改就完事儿了。没必要挣扎。
或者说,你忽略掉《安全》这个词儿,就当成满足他们内部的规范。

本质上和 rsa 换成 sm2 ,mysql 换成 达梦 之类的,没区别。
baiyi
2023-07-25 17:22:49 +08:00
@zpf124 #35 请问 restful 的作者是谁? http method 是 WebDAV 定义的吗?在哪个 RFC 文档里?
zoharSoul
2023-07-25 17:23:25 +08:00
让你 restful, 掉沟里了吧
shyangs
2023-07-25 17:27:07 +08:00
@dog82

不遵從 RESTful 的人通常是實戰派的,比如你這次遇到的安全審計,你噴甲方或安全公司也沒用,他們也不會放你過。

反而 RESTful 是從一篇博士論文出來的,學院派氣息濃厚。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/959602

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX