为什么 Content-Type 为“application/json”的跨域 POST 请求被认为是不安全的?

问题描述 投票:0回答:2

根据

https://javascript.info/fetch-crossorigin#unsafe-requests

安全标头 – 唯一允许的自定义标头是:
...

Content-Type
,值为
application/x-www-form-urlencoded
multipart/form-data
text/plain

如果我正确理解后果:

发送带有

POST
标头
Content-Type
的跨源
appliation/json
请求将首先触发 preflight
OPTIONS
请求,需要正确处理该请求...在处理实际
POST
请求之前。

=> 为什么

application/json
被认为是不安全的;直接接受请求会有什么风险?

(我已经花了几个小时尝试修复 CORS 设置,并且想了解根本问题。)

json fetch httprequest cross-domain
2个回答
0
投票

POST 请求被认为是不安全的,因为它们应该改变服务器上的内容。

例如:您不希望 Alice 访问 Mallory 的邪恶站点,并让其中的一些 Ajax 向 Alice 工作的公司的 Intranet 发出 HTTP POST 请求,并为 Mallory 创建一个预约来办公室并通过安检。您并不希望马洛里的网站能够删除您网络邮件中的所有邮件。等等

您可以在

enctype

 属性中设置的内容类型的 
POST 请求不会预检……但无论如何您都可以使用常规 HTML 表单发出这些请求(因为常规 HTML 表单早于浏览器实现跨源安全性的想法)因此,如果您对这些内容类型执行任何操作,您已经需要明确的 CSRF 防御。


0
投票

这是关于简单请求还是不简单请求的问题。 访问 CORS:简单请求的目的是什么?

© www.soinside.com 2019 - 2024. All rights reserved.