Ajax到PHP登录脚本安全
Ajax to PHP Login Script Secure
我正在研究如何通过Ajax安全地将用户名和密码发送到PHP,以及如何在MySQL数据库中正确存储这些值。
在过去,我用过以下类型的例子:
var formData = {username:$('#username').val(), password:$('#password').val()};
//SEND
$.ajax({
type: "POST",
url: "/signin.php",
data: formData,
success: function(data) {
//success
}
});
这是通过JavaScript发送值,然后从PHP获得返回OK
或FAIL
。但这足够安全吗?我希望有人能好心地给我指出从JavaScript到PHP发送敏感数据的正确和安全的方向。
SQLfiddle
要确保安全,您至少需要确保三件事:
- 输入框,type=密码用户输入密码的用户控件是密码输入类型,或为此目的设计的自定义控件,该控件已经过充分验证,可以不缓存等。
- 连接,https在当前状态下,您的问题没有提到连接是否通过https。如果登录框本身通过安全连接显示,则更安全。此外,ajax需要通过安全连接发布。
- 正确散列密码使用本地PHP密码散列API和散列密码,并将散列存储在数据库中。使用password_verify函数验证输入的密码。password_verify password_hash () ()
要做到"正确",你还应该考虑:
- 控制登录请求失败的速率和次数。
- 记录登录统计数据,以便您可以识别奇怪的行为并进行调查
- 使用浏览器端和服务器端密码强度测试来验证用户的新密码是否足够强
- 使用captcha防止行人自动化
-
创建专门用于身份验证的数据库用户。相应地限制表/模式访问。使用单独的子域进行身份验证。使用fastcgi-php或suphp设置用户对数据库的授权访问权限。允许普通PHP数据库用户只能从这个"沙箱"中读取信号量或其他登录状态凭据。
-
当用户输入他们的密码时,使用站点验证,ssl,以及他们在创建帐户时设置的验证"短语"或图片,以便他们可以确保他们输入到您的服务器。
此外,大多数安全问题将涉及到登录后的操作。您打算如何维护用户的会话?更高的安全性通常需要牺牲用户的便利性。您需要仔细考虑用户在经过身份验证后可以访问哪些类型的能力和信息。你的安全计划应该考虑到这一点。
你可以考虑的另一种选择是使用OAuth2提供商,如谷歌和Facebook。
相关文章:
- 我尝试在登录脚本中使用ajax,但页面不会重定向
- 登录后PHP登录脚本重定向不起作用
- SyntaxError:JSON.parse:登录脚本中出现意外字符
- JavaScript 中的登录脚本失败
- 使用嵌入式 JS(CORS+AJAX 请求)跨域安全登录
- 在 IE8 中将文件系统对象注册为安全的脚本
- 使用hello.js安全登录
- Ajax+PHP登录脚本不起作用
- 安全登录Facebook
- PHP登录脚本与重定向
- 如何禁用不安全的脚本从执行chrome测试版支持CSP
- 重新提交Spring安全登录表单
- 不能登录脚本,即使我有用户和密码设置在我的数据库
- 另一个油脂猴子登录脚本
- Ajax到PHP登录脚本安全
- PHP登录脚本不能在IE8或IE9中工作
- 是什么让一个不安全的脚本“;“不安全”;
- 在后台加载重定向站点的登录脚本
- 简单的安全登录php/javascript
- 提交表单时刷新PHP/JavaScript登录脚本