我有用nodejs编写的API。如果有人不在我的网站上,我不会希望任何人向我的应用程序和数据库中写任何东西。
我使用了cors
库https://github.com/expressjs/cors
我尝试过:app.use(cors())
以及直接在我的/post
内-
app.get('/users', cors(), function() {})
但是它仍然不起作用。我的意思是,我可以打开Postman应用程序并发送/ get和/ post请求,而不会出现任何错误!
我什至可以看到标头已更改:Access-Control-Allow-Origin → https://example.com
(我的域),但是我仍然可以在邮递员中获取数据。
我想念什么吗?我不在乎获取,但是如果有人不在我的域中,我不希望任何人向我的数据库发出POST请求...
答案 0 :(得分:4)
Same Origin Policy旨在阻止攻击站点跨越跨起源的读取数据(使用登录用户的浏览器)。 CORS允许您放松同一起源策略。 CORS会削弱安全性,但不会提高安全性。
当人们想要提高安全性时,他们会针对CSRF attacks生成应用防御,但这只是阻止了攻击站点使用您所信任的用户的浏览器提交数据。
您的HTTP端点是公共的。您必须这样对待他们。
您无法控制他人发送给他们的内容。
您不能强迫人们仅发送HTML表单,链接和JavaScript旨在发送的请求。
您只能对收到的请求进行限制。常见的示例包括要求来自经过身份验证/授权的用户(例如用户名+密码或OAuth)发出的请求,以及对速率的限制,以阻止单个源在短时间内发送多个接受的请求。