REST API 安全问题

2019-01-21 13:56:34 +08:00
 gzf6

楼主是做前端的,现在学着用 koa2 写 api 服务器,公司的后端接口一般都设计为 get 或 post 方法,很少用 put 或 delete 方法,想请教下,这两个方法有什么安全上的问题吗?

10497 次点击
所在节点    程序员
82 条回复
shuizhengqi
2019-01-21 19:18:15 +08:00
post 本来就比 get 好用,说没区别的是自身经验太少。
blueorange
2019-01-21 19:23:07 +08:00
以前公司给别人学校里面做了个系统, 学校网管拿漏扫工具, 扫到 put 和 delete 方法, 直接报高危漏洞。哎, 没办法呀
scriptB0y
2019-01-21 19:24:47 +08:00
我见过一个 REST API,url 是:xxx.com/api/rest 只有这一个,然后 POST body 里面写各种参数...
micean
2019-01-21 19:27:21 +08:00
有的机房连 404 都直接给你拦了……
yzkcy
2019-01-21 19:50:58 +08:00
@FrankFang128 #4 POST 还真比 GET 更安全。
xuanbg
2019-01-21 21:06:09 +08:00
全用 POST 还是有好处的,就是比较简单。说真的,REST 接口 url 路径里面带参数的,网关上面鉴权或者过滤器鉴权还得写正则替换,很烦的。
loading
2019-01-21 21:19:30 +08:00
鉴权没做好,怪规范,很科学。
freakxx
2019-01-21 22:28:10 +08:00
跟安全没关系,
规范问题,
更多的考虑是语义的问题,
针对的都是对资源做处理。
royzxq
2019-01-21 22:37:52 +08:00
有的场景下只用 post 和 get 是为了兼容。还有就是 post 比 get 要好用是真的,get 拿到的真的就只是个字符串。另外一个就是 get 和 delete 都只能通过 querystring 来传参数( header 另算)。
swcat
2019-01-21 22:44:35 +08:00
不就是请求行开头那几个字母不一样么。。。。
关安全啥事
WilliamYang
2019-01-21 22:58:22 +08:00
method 跟是否安全没有关系
Hstar
2019-01-21 23:33:55 +08:00
有一部分是对前端的妥协,设计了 PUT 或者 DELETE 的借口,前端过来和我说,“我们这个库不支持 PUT 方法的呀,换个好不好嘛”
Sparetire
2019-01-21 23:45:57 +08:00
@Cbdy "这本身是 HTTP 协议安全的一部分"
----------
这什么时候成了 HTTP 协议安全的一部分了...跨域是浏览器的安全策略而已, 简单请求非简单请求也就和浏览器有关, 脱离浏览器的环境, 这世界上这么多 HTTP 客户端都不管你什么简单不简单的请求...
gouflv
2019-01-21 23:52:39 +08:00
什么年代了,还讨论这个
hilbertz
2019-01-21 23:56:45 +08:00
用 protobuf rpc 最安全
Sparetire
2019-01-21 23:59:23 +08:00
@Cbdy "如果这个请求是 PUT、PATCH 等,这个请求可以在预检阶段就拦下来,避免跨域请求对服务器的产生未预期的影响"
---------
另一方面, 同源策略从来就不是为了避免什么跨域请求对服务器产生未预期的影响, 难道只有 PUT, PATCH 这样的非简单请求才会对服务器产生未预期的影响? 简单的 GET, POST 就不能对服务器产生未预期的影响?
照这样的说法, 如果真有人想对服务器造成未预期影响, 他只要发简单的 GET, POST 请求就好了.
然而是否会产生未预期的影响, 完全取决于服务器对 HTTP Method 的处理是否幂等, 如果不幂等, 简单的 GET 请求也照样会产生影响. 这完全是人的问题, 和协议安全性没有任何关系.
见过脑子不正常的后端拿着表单 GET 也能做插入的, HTTP 完全不背这锅
mitoop
2019-01-22 00:30:17 +08:00
@FrankFang128 上次有个测试这么问我,我说什么问题? 最后不了了之了。😀
so1n
2019-01-22 00:49:35 +08:00
前端不支持其他方法,cdn 或者防火墙过不了 get post 外的其他方法
tonyaiken
2019-01-22 03:05:52 +08:00
虽然按照最佳实践增删查改应该对应 POST, DELETE, GET, PUT,但是只用 GET POST 也够应付。安全问题的话只要不要在用 GET 的时候要求把 API Key 之类的放在 query parameter 应该就够了。
limuyan44
2019-01-22 07:33:31 +08:00
什么年代了,rest 还是正统啊,好用就行。前面竟然竟然还有用不好 rest 就是煞笔的说法,未成年吗。开发么,适合就好,没必要上来就啥不都不管就搞 rest。话说说不清几个请求方法具体有什么区别的多了去了。

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

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

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

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

© 2021 V2EX