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

2022-01-23 10:29:15 +08:00
 caicaiwoshishui
之前习惯使用 restful api ,如果说 https 只有 post 请求是安全的话?那为啥还需要 get 、put 、delete ?我该如何反驳他。
24043 次点击
所在节点    程序员
195 条回复
leafre
2022-01-23 11:14:53 +08:00
首先你的 URL 符合 restful 规范吗?不符合就不要强求后端遵守规范,毕竟规范只是规范不具有强制性

no restful : POST /login 和 POST /logout

restful : POST /sessions 和 DELETE /sessions
hlwjia
2022-01-23 11:15:32 +08:00
@changdy 说得好,另外就是

对错的事情,都有前提条件的,如果赶着上线,要让后端按照 restful 规范改,那就是错的。

如果单单只是说“只有 post 是安全的”,那也是错的。

你心里知道 restful 是怎么一回事就可以,最好的办法是辞职去一个遵守 restful 的团队。
Wuuuu
2022-01-23 11:16:34 +08:00
借楼求问下,现在我们就是 POST 一把梭,因为比如有一列表数据,返回给前端,要求能自定义分页,能 filter 所有字段,能 sort 所有字段,filter 时间类型的可能还要判断 大于,小于,大于或者 between 。字段可能有 10+的数量,这种 GET 请求写起来有什么好方法么。
star7th
2022-01-23 11:16:54 +08:00
全 post 没问题。对前后端来讲都省事很多。我反而非常不同意标准的 restful api 使用 http 状态码来跟业务耦合。我觉得 http 协议应该解决的是系统层面的东西。业务的东西都应该放在 header 或者 body
hlwjia
2022-01-23 11:19:35 +08:00
leafre
2022-01-23 11:20:36 +08:00
@leafre 还有 restful 针对只有增删改查的业务来说很合适,当复杂业务 restful 那几种明显是不够的,强行使用反而导致 API 不直观清晰,导致混乱
liuzhaowei55
2022-01-23 11:20:51 +08:00
@Wuuuu 之前看过完全按照标准来就需要两次请求,一次 post 提交过滤条件,然后返回结果 url ,前端请求这个 url 获取结果
star7th
2022-01-23 11:21:31 +08:00
标准的 restful api 在国内无法大范围流行是有它的局限性的。我自己做接口管理方面的工具 showdoc ,https://github.com/star7th/showdoc 我发现完全使用标准 restful api 的公司比例不高。肯定是有,但是比例没有很高,应该不到 20% 。甚至大厂内部也不算多。大部分还是 post/get ,返回 json 这种形式。而且这种形式对前后端代码调用都比较友好。
seers
2022-01-23 11:22:24 +08:00
之前在哪看的,post 还是 get 底层都一样,只是强行区别开
index90
2022-01-23 11:23:00 +08:00
HTTPS ,常称为 HTTP over TLS 、HTTP over SSL
严格地讲,HTTPS 并不是一个单独的协议,而是对工作在一加密连接( TLS 或 SSL )上的常规 HTTP 协议的称呼。
https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%AE%89%E5%85%A8%E5%8D%8F%E8%AE%AE

估计你同事以为 HTTPS 是只对 body 进行加密,其他都是明文,而实际上 HTTPS 依然是 HTTP 七层协议,安全是依赖 TCP 层的加密连接。
HackerJax
2022-01-23 11:24:32 +08:00
@Smilencer 还真遇到全 GET ,理由是:查 apache 日志可以看到 query 参数。哈哈,血压上升的操作
wheeler
2022-01-23 11:24:37 +08:00
@Wuuuu #23 我看见有把 json 塞 url 的。

api/rest/v1/products?search={"enabled":[{"operator":"=","value":true}],"completeness":[{"operator":">","value":70,"scope":"ecommerce"}]}


https://api.akeneo.com/documentation/filter.html
darknoll
2022-01-23 11:25:54 +08:00
说被搜索引擎收录的不知道单页应用这个概念?
hotsymbol
2022-01-23 11:30:01 +08:00
OSWAP 和 PCIDSS 的接口安全规范里面都写了建议全量使用 POST 接口
labulaka521
2022-01-23 11:47:40 +08:00
全 post 接口用 Getxxx/Listxxx/Createxxx/Updatexxx 感觉很好
Biwood
2022-01-23 11:47:52 +08:00
就事论事,如果没有确凿的证据说明全量 post 不好,那就按对方的来呗,为了反驳而反驳显得很奇怪,只能说知识储备量不够。与其问为什么全部 post 不好,不如问问为什么 get 和 post 分开用更好,对比一下哪一种重要性更高,更符合你的业务模式。
EPr2hh6LADQWqRVH
2022-01-23 11:55:21 +08:00
实际项目中 API 能套进 restful 模型完全是一种偶然,大多数时候没法套进去。

说到底 PUT PATCH DELETE 这些是从 WebDAV 来的,是操作静态文件用的,没法套给抽象概念。

我也不知道谁还在传教 restful,搞得市场上这么多初出茅庐的文革小将,见面就是你这 API 不 restful.

无力吐槽。
looking0truth
2022-01-23 11:56:19 +08:00
1. 问 leader
2. 听 leader 的
3. 结帖
Innovatino
2022-01-23 12:00:35 +08:00
你可以在简历里面写上这个要求:团队后端接口必须遵循 restful 规范。
求职是双向的,你也可以选择他们
nvkou
2022-01-23 12:06:30 +08:00
怎么反驳?安全性不由 http 协议提供,完事

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

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

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

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

© 2021 V2EX