我正在构建一个登录系统,我也希望让它更安全一点。我不会发布我的整个登录过程文件,因为它还没有完成,但我确实需要一个简短的待办事项样式列表来使整个系统更安全。我知道使用 PDO 的预处理语句有助于防止 SQL 注入。我显然也在用盐散列密码。还有什么关键的事情吗?真的会帮助我!
我还在某处读到不建议在表格中使用header()
。(例如:在注册过程完成后重定向用户。这是真的还是假的?还有什么其他选择?
顺便说一句,表单数据显然将在另一个页面中处理,我想知道是否可以从流程文件发回错误(例如"用户名太短")。我知道使用 jQuery 的 .post()
和回调函数很容易做到,但我只是好奇:D
这是我对登录系统的建议:
- 将用户的 ID 存储在 Cookie 中
- 生成特殊令牌和哈希+盐,并将它们存储在 cookie 中
- 将所有内容存储在数据库中
- 每次页面加载时从 cookie 中获取数据,并尝试在数据库中搜索它们
- 如果未找到,则注销用户
- 每次页面加载时更改令牌
您可以使用header()
重定向用户,也可以在它之后使用die()
或exit()
,因为如果您不使用其中一个,其余代码将继续执行。
当然,你可以发回错误。 例如,如果您有
<form method="post" action="action.php">
<input type="text" name="username" />
</form>
然后在行动中.php,当检查$_POST['username']
的长度时,如果它太短,请执行类似
print('<p class="warnings">The username is too short; it must be between X and Y characters.</p>');
require('yourform.php');
其中yourform.php
包含上述表单的 HTML。