如何正确使用ajax函数
我已经在互联网上搜索过,但找不到我要查找的信息。所以,如果这是一个简单的问题或问了数百万次,我很抱歉。
我正在开发一个(可能)有很多 Ajax 功能的网站。现在我想知道 Facebook 是如何做到这一点的,例如“喜欢”按钮。如果我使用 ajax 调用页面 addLike.php?post_id=1,那么访问者(怀有恶意)可以使用此 url 通过向 post_id 添加随机值来操纵我的数据库。
我怎样才能防止这种情况发生?或者最好的方法是什么?
I have searched the Internet, but I can't find the info I'm looking for. So I'm sorry if it's a simple question or asked a miljon times.
I'm developing a website with (probably) a lot of Ajax functions. Now I'm wondering how FaceBook is doing this, for example the 'Like' button. If I use a ajax call to a page addLike.php?post_id=1, then an visitor (with evil intentions) can use this url to manipulate my db by adding random values to the post_id.
How can I prevent this? Or what's the best way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先也是最重要的一点,对数据条目(存储在数据库、文件等中的内容)进行更改的调用永远不能通过“GET”HTTP 请求进行访问,例如删除论坛中的帖子。也就是说,如果您要向帖子添加点赞,则应该使用
$.post
来执行 ajax 请求(假设您使用的是 jQuery)。而且,在响应每个请求之前应该完成身份验证和授权。这意味着,如果用户想要向帖子添加点赞,他/她应该已经过身份验证并且还被允许执行特定操作。流行的 Web 框架将帮助您自动实现这一目标(通过配置)。
此外,您还应该通过数据清理来防止 XSS 攻击。你可以谷歌一下了解更多详情。
First and foremost, calls to make mutation to data entries (something stored in the database, files, etc.) should never be accessible from a 'GET' HTTP request, e.g. deleting a post in a forum. That is to say, if you're adding like to a post, you should use
$.post
to perform an ajax request (supposing you're using jQuery).And also, authentication and authorization should be done before responding to every request. Which means, if the user wanted to add like to a post, he/she should have been authenticated and also permitted to perform the specific action. Prevailing web frameworks will help you to achieve this automatically (with configurations).
And further more, you should also prevent XSS attack by data sanitization. You can google it for more details.