对接同事的接口,他定义的所有接口都是 post 请求,理由是 https 用 post 更安全

2022-01-23 10:29:15 +08:00
 caicaiwoshishui
之前习惯使用 restful api ,如果说 https 只有 post 请求是安全的话?那为啥还需要 get 、put 、delete ?我该如何反驳他。
28142 次点击
所在节点    程序员
195 条回复
ragnaroks
2022-01-23 23:14:15 +08:00
他的说法肯定是有问题的,但是用 restful 就能承载的业务也不需要规范
ZRS
2022-01-23 23:26:03 +08:00
POST 在日志里留的敏感信息少点,更安全说不上
IvanLi127
2022-01-23 23:28:29 +08:00
反驳他干嘛,找人一起笑话他就行了。人越多越好,不然他是不会知道自己错了。
另外,这事直接向领导反应,领导没意见那就当一天和尚撞一天钟呗。
受不了的话,这不年底了,是时候换个环境了😏
IvanLi127
2022-01-23 23:34:07 +08:00
楼上居然说 POST 打印的信息少比较安全... 那你们打印日志干嘛?不打不就更安全了……日志信息不全面也能排查问题?那直接不打印 search 参数不就好了。
Hanggi
2022-01-23 23:43:09 +08:00
@caicaiwoshishui 楼主没必要在意楼上这些人胡扯。
听我的,该用什么就用什么。

请求里可以带的东西基本分为 param, query 和 body ,其中 param 和 query 都是写在 url 里的。
如果你觉得你传的参数不应该被直接看到就用 POST 。
其余情况该用什么就用什么。
(例如:GET /v1/articles?page=2&size=20&type=hot 是完全没问题的,也无需担心什么安全问题,真正的安全问题不是 POST 就能解决的,不是吗)

至于你们公司那位,经验告诉我们你没必要舒服他,如果以后有机会写后端你可以使用 Restful API
mogutouer
2022-01-23 23:51:51 +08:00
你如果作为前端,后端接口写好了什么样你直接用就是了,难道你没对接过第三方的接口?比如微信的 API ,微信获取个头像 H5 还在使用跳过去再跳回来加 GET 参数的方式,难道你能去怼腾讯?
lolizeppelin
2022-01-23 23:55:51 +08:00
你要是后端很好解决啊,前端加个 METHOD 重定向就是,全部 post 然后重定向
既解决全 post 问题也解决 restful 问题,没冲突
3dwelcome
2022-01-24 00:07:25 +08:00
post 可以携带数据体,get 不能。
如果坚持用 restful ,可以写个转接口,对 get 做向下兼容的。
我个人用 post 挺愉快,以前是 get/post+json ,现在全部用二进制 rpc 传数据,只能单一 post 。流加密后传输,感觉生活真美好。
kran
2022-01-24 00:24:53 +08:00
众生百态呀。
数据安全是安全的重要部分
一个系统并不只有业务部分会记录日志
每个部分的数据安全定级不一样。
relaxgo
2022-01-24 00:30:45 +08:00
以前也喜欢 Restful , 但是实践多了,才发现 post + 方法名作为路径,是最省心的。restful 对于复杂的业务需求,到最后就是四不像,想个路径都是心智负担。安全上最主要就是 get 可能会意外暴露一些信息,但是不是我喜欢 post 主要理由。
sytnishizuiai
2022-01-24 00:47:14 +08:00
@gamexg #101 我跟你相同,所有接口全走 post ,直接封装好一套 jwt 验证机制,我最近 2 年和不同的 4 个前端临时合作,简单把我的调用逻辑讲解 2 分钟,对方就懂了,调通一个接口,剩下接口都没问题。
2i2Re2PLMaDnghL
2022-01-24 01:45:09 +08:00
啊对对对,不过我觉得 WebSocket 更安全,用 ws 再封装一个 http/1.1 出来吧(
2i2Re2PLMaDnghL
2022-01-24 01:53:50 +08:00
其实也不是非得 RESTful ,更别说你 RESTful 这诡异的大小写都不进行原样模仿,可别无脑捧着吹了。
全用 post 可能是仿 RPC 的形式,甚至可能就是用的 jsonrpc 。
范式( Paradigm )都不一样,不存在讨论孰优孰劣的基础。
hl
2022-01-24 05:14:39 +08:00
国内某大厂核心业务全部为 POST 我说啥了.. POST /api/path?..url params + body 的形式. Header 用于放链路追踪的各种信息,url params 用于接口基本信息上报,body 业务数据
很多时候国内大环境没有所谓的是否遵循协议规范设计,出于种种早期因素演变而来的适合统一协作的规范才是真正的规范。
RightHand
2022-01-24 07:39:51 +08:00
都不上 CDN 的吗,全 post 运维不打他?
ktqFDx9m2Bvfq3y4
2022-01-24 07:48:07 +08:00
@sytnishizuiai #131 我也是全部 post ,就是为了简单然后方便封装。既然 get/post 没有本质区别何必浪费代码呢。
@RightHand #135 目前还没有遇到需要从 http 层缓存 api 的,都是 api 自己读缓存。如果量没有想象中那么大,实际上我觉得直接缓存 api 可能弊大于利。
murmur
2022-01-24 07:53:15 +08:00
restful 我感觉才是反人类设计

都用 post 好处说不完,唯一的问题就是直接打到浏览器地址框里没法直接访问
aikilan
2022-01-24 09:02:14 +08:00
技术是过程,业务是目的,别搞得本末倒置了。你的追求可以在你的个人项目里肆意发挥,但是在公司项目上,最好考虑清楚团队之间的合作,你习惯了 restful ,为什么就觉得别人也必须跟着你走? http 是个协议,restful 只是个协议通讯风格而已。
aino
2022-01-24 09:12:26 +08:00
对于逆向工程师、安全工程师而已,这都是些笑话
awanganddong
2022-01-24 09:15:43 +08:00
纯粹的 restful api 不能完美的符合业务侧的需求。
get 和 post 的使用更多的是根据业务来考虑。

全部使用 post 坏处是查操作,以及打日志方面处理起来增加了负担。
好处吗,比如传递参数没有限制。

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

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

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

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

© 2021 V2EX