PHP/MySQL 安全登录和 session

标签 php mysql security passwords

我有一个登录当前网站的服务,我想知道的是 - 有什么特别的方法可以称为最安全吗?

请允许我更好地解释一下我的系统:

我目前有一个带有用户表的 PHP MySQL 数据库。用户名和密码都存储为 VARCHAR(我知道这不是最好的密码)。

在注册表单方面,我通过只允许输入 a-Z 0-9 并限制字符数来规范密码和用户名的选择。在登录表单方面,我使用 mysql_real_escape_string 停止攻击,并使用 POST 到 iFrame 而不是 AJAX。

我觉得我正在尽我所能来防止来自表单端的攻击,而不是来自数据库端的攻击。我知道您可以在进入数据库时​​将密码存储类型更改为加密,但我不明白的是我将如何查询这个加密的字符串。

鉴于我所描述的内容,您会在增加安全性方面提出什么建议,为什么?您选择了哪些方法来防止黑客攻击和攻击?您能从我所描述的内容中看出任何明显的安全漏洞吗?也许最重要的是,考虑到我在 Web 开发游戏中的时间不长并且经验不多,我可以做些什么来纠正这些问题?

(请记住,我不是在创建一个系统来存放 secret 或煽动性数据)

最佳答案

首先,不要在数据库中存储明文密码。因此,在注册新用户时,将他们的密码输入为 hash . MD5 最常用于此。我建议用盐。所以为了存储:

$password = md5($yoursalt . $_POST['password']);

现在当用户想要登录时,您的帖子中再次有了他们的密码。现在创建与以前相同的散列并在数据库中搜索此散列(使用他们的用户名)。这样您就不会存储他们的实际密码。

关于PHP/MySQL 安全登录和 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3529446/

相关文章:

azure - 机器人如何发现我的 Azure 子域?

security - 什么是练习缓冲区溢出的好程序(仅用于教育目的)?

php - 当字段包含 ' 字符时保存到 MySQL 时出错

php - 无法通过 http 将 base64 图像内容 POST 到 PHP 服务器

通过 shell 脚本的 MySQLDump 没有被执行,为什么?

mysql - 类型错误 : Cannot read property 'findOne' of undefined while using sequelize in node

c# - 如何从收到的 msmq 消息中获取发件人的 WindowsIdentity?

php - Alamofire 和 PHP 上传图像

php - 如何从数据库获取两组结果 - 拥有某个项目的用户以及拥有该项目的用户的 friend

MySql IN 子句,试图匹配 IN 元组列表