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

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

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

14198 次点击
所在节点    Java
161 条回复
infactory
2023-07-26 16:40:44 +08:00
@xuecat 用 patch put 并不就是 restful ,graphql 更是和 restful 毫不相干。
何况,如果一个业务系统的 api 不是全都遵守 restful 规范,这说明了 restful 是失败的,是局限的,是不适用于复杂业务系统的。
baiyi
2023-07-26 16:45:31 +08:00
@EchoGroot #140 我以为他查一下 rest 的作者,就能明白 http 的设计可不是从 webdav 那抄来的,结果他给我回复的文章可能他自己都没仔细看,就得出个 restful 是抄袭 webdav http method 的结论。
毕竟嘴贱问了,又不好不回,但真要计较,回复太多又嫌累。是我的错,下次不回了
brader
2023-07-26 16:48:03 +08:00
入行开始我就把 restful 踢一边了,只用 post/get ,我写的接口一般支持这 2 种,但是我不告诉前端,get 方式都是我自己调试方便偷偷用
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
2023-07-26 17:15:41 +08:00
@baiyi 你不回最好,减少了这个世界上的无用信息和戾气。

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

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

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

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

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

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

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

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

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

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

技术或者技术审美差也就算了,还没教养,而且还有好几个点赞的,真是一丘貉。
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
2023-07-26 22:07:18 +08:00
@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
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
2023-07-26 22:41:18 +08:00
学了那么多年复杂的 CS 理论,反倒是连基本逻辑都越来越乱了,而且越来越像孔乙己。
真是,哎,可惜,可惜了
Slurp
2023-07-26 22:58:22 +08:00
@lesismal Go 语言爱好者,大道至简爱好者,入场!
@FrankHB C++ 语言爱好者,语言律师,入场!
@duangsuse Python 、JS 、绝句爱好者,民科入场!
@skywind3000 C 语言爱好者,KCP 作者,入场!
@baobao1270 推特小网红,运维爱好者,入场!
@himself65 推特小网红,TypeScript 爱好者,RESTful 爱好者,入场!

我也不说别的,我就简单召唤一下。😎
proxytoworld
2023-07-26 23:59:34 +08:00
@Slurp 绷不住了,引战 18
pocketz
2023-07-27 14:16:09 +08:00
@Slurp #158 我去,冲浪高手!(惊

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

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

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

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

© 2021 V2EX