rest - RESTful Web 服务中不安全的 HTTP 方法

标签 rest

因此,一般来说,像 PUT 和 DELETE 这样的 HTTP 方法被认为是不安全的。

但是,建议对 RESTful API 使用 PUT 和 DELETE 方法。

为什么这些方法 PUT 和 DELETE 对于 RESTful API 来说不被认为是不安全的

最佳答案

TL;DR

它们被认为是不安全的,因为网络服务器的默认行为会直接影响服务器文件系统上的文件——允许可执行代码攻击。

RESTful 服务不需要(必须)根据原始请求创建文件。

内部/防火墙/代理

内部 API - 由于位于专用 LAN 中而受到保护。它只能由其他内部(可信)工具访问。

类似地,受防火墙保护的内部或外部 API 仅接受来自某些 IP(受信任服务器)的请求。

代理服务器可以处理加密和用户身份验证以及授权,然后将请求转发到 RESTful 服务。

但是还有哪些安全风险?

如果 PUT 会在服务器上创建可执行文件,这将非常不安全**——因为存在代码注入(inject)/可执行文件注入(inject)的风险...

...但是当接收 PUT 或 DELETE 操作时,我们并不是在谈论文件管理本身。我们正在讨论一个特定的处理程序代码,它分析请求并执行您告诉它对数据执行的任何操作(例如:将其放入数据库)。

**尤其是在您对资源(在 RESTful 上下文中)执行 HTTP PUT 后,人们会期望有权在同一资源上执行 HTTP GET(这意味着该资源将可直接访问)。

关于rest - RESTful Web 服务中不安全的 HTTP 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38462856/

相关文章:

javascript - Backbone 中获取请求时未定义

rest - 使用 Jersey 的 REST with Java (JAX-RS) 中的欢迎页面

java - 一个 Rest API 调用另一个 Rest API

php - 根据客户端发送 HTML 或 JSON 响应

ios - 使用 Restkit 将整数作为 json 发送

java - 有没有 REST 服务自动化框架?

rest - RESTeasy 客户端是否支持 TLS/SSL?

c# - API GET 请求返回 HTML/文本而不是 JSON

Java - Jersey 返回字符串列表

delphi - 我可以在Delphi 7中使用PUT和DELETE发送请求吗?