我有一个项目,用户拥有自己的用户页面,这些用户页面由可编辑的块组成(可以移动它们,并且可以更改其内容)。这些块的内容(当前主要是文本)等存储在mysql数据库中。整个编辑由我的page-editing.js
脚本完成。用户保存更改后,page-editing.js
向save-page.php
发送ajax post调用(数据是块对象,用户名和页面名称的数组),将接收的数据插入mysql数据库。
我的问题是:
如何阻止对save-page.php
发送“不适当”的帖子,因为据我所知,任何人都可以向其发送电话。如果在save-page.php
我检查登录会话是否已经开始,会话中是否包含正确的用户名,是否足够?
答案 0 :(得分:1)
安全吗?好吧,如果你保护那个端点就好了。
有许多方法可以提供安全性,但我建议这里有两个选项。
1)基于会话。验证用户,然后在内置的PHP Session中设置一个标志。检查端点中的该标志,如果请求未经过身份验证,则执行相应的错误处理。
2)无国籍。使用安全cookie协议实现来签署和验证请求 协议在这里:http://www.cse.msu.edu/~alexliu/publications/Cookie/cookie.pdf 并且有各种实现。以下是关于该主题的许多博客文章之一:http://raza.narfum.org/post/1/user-authentication-with-a-secure-cookie-protocol-in-php/
前者会让你最快速地滚动,可能就是你应该做的。后者是您在扩展时可以进行的优化,因为会话会在水平架构上产生麻烦。
在任何情况下,请注意如何存储任何密码(哈希,加盐),并且使用https当然会保证用户信息不会被明确发送。
答案 1 :(得分:0)
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
... it's an AJAX request so do something ...
}
else {
... it's not an AJAX request so do something else ...
}
但最好的方法是会话检查。因为这可能是欺骗性的,你的GET / POST变量也是如此。