2011-08-30 100 views
0

可能重复:
How to authenticate AJAX call?AJAX PHP的安全问题

我有一个页面ajax_check_user_pass通过AJAX检查用户的用户名和密码。

此页中的Ajax代码将用户名和密码张贴到php文件php_check.phpphp_check.php检查用户名和密码以匹配数据库。

如何确保php_check.php接收的用户名和密码来自ajax_check_user_pass并且不是由某人伪造的?

我已经使用会话,但它不工作。另外,我知道检查引荐来源不是可靠的。

在此先感谢。

+3

真的很重要吗?如果您担心暴力破解,请在x次尝试后实施自动阻止机制。 – Rijk

+1

这是用户输入;它怎么可能是假的?你试图抵御什么攻击? – Quentin

回答

4

事实是,您不知道是谁向您发送用户名和密码,他们必须输入此信息的事实证明您不知道他们是谁,只要您清理发布的信息它应该按照你想要的方式工作。

许多网站实施了最大次数的尝试,但这真的取决于您。

+0

他的问题不是“谁”,而是如何验证请求的来源。 – thwd

+0

“谁”是*起源,请求者的身份。 – jondavidjohn

+0

>“我如何确保php_check.php收到的用户名和密码来自ajax_check_user_pass” – thwd

0

这种类型的攻击被称为CSRF,可以通过在会话中存储挑战令牌或Cookie,以避免在进行任何进一步操作之前,对表单或Ajax调用在您的网站上发出的每个请求进行检查操作。

阅读:

https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet

同时确保再生此令牌每隔X分钟或Y浏览量,无论先来了。

+2

这是我的观点,CSRF在面向公众的登录表单上的保护似乎有点毫无意义... – jondavidjohn