0

我正在构建一个登录系统,我也希望让它更安全一点。我不会发布我的整个登录过程文件,因为它还没有完成,但我确实需要一个简短的待办事项列表来使整个系统更加安全。我知道使用 PDO 的预处理语句有助于防止 SQL 注入。我显然也在用盐对密码进行哈希处理。还有什么重要的吗?真的会帮助我!

我还在某处读到header()不建议在表单中使用。(例如:在注册过程完成后重定向用户。)这是真的还是假的?还有哪些其他选择?

顺便说一句,表单数据显然会在另一个页面中处理,我想知道是否可以从流程文件中发回错误(例如“用户名太短”)。我知道使用 jQuery.post()和回调函数很容易做到,但我只是好奇 :D

4

2 回答 2

1

当然,您可以发回错误。例如,如果您有

<form method="post" action="action.php">
  <input type="text" name="username" />
</form>

然后在 action.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。

于 2012-07-03T17:46:32.013 回答
1

以下是我对登录系统的建议:

  • 将用户 ID 存储在 cookie 中
  • 生成特殊令牌和哈希+盐并将它们存储在 cookie 中
  • 将所有内容存储在数据库中
  • 在每次页面加载时从 cookie 中获取数据并尝试在数据库中搜索它们
  • 如果找不到,则注销用户
  • 在每次页面加载时更改令牌

您可以使用header()重定向用户,也可以使用die()orexit()在它之后,因为如果您不使用其中一个,其余代码将继续执行。

于 2012-07-03T17:50:56.547 回答