Php 关于header()和表单安全性的内容

Php 关于header()和表单安全性的内容,php,forms,security,header,Php,Forms,Security,Header,我正在建立一个登录系统,我也希望它更安全一点。 我不会发布我的整个登录过程文件,因为它还没有完成,但我确实需要一个简短的待办事项列表,以使整个系统更加安全。我知道使用PDO准备好的语句有助于防止SQL注入。我显然也在用盐对密码进行哈希运算。还有什么重要的吗? 真的会帮我的 我还从某个地方读到,表单中不建议使用header()。(例如:注册过程完成后重定向用户。) 这是真的还是假的?还有其他的选择吗 顺便说一下,表单数据显然将在另一个页面中处理,我想知道是否有可能从流程文件发回错误(例如“用户名太

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

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


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

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

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

其中
yourform.php
包含上述表单的HTML

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

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

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

谢谢。我将尝试在我的代码中植入bcrypt.:。。。如果用户禁用Cookie?正是。。。另外,使用
session\u regenate\u id()
?我到底应该怎么做呢?只是一个随机字符串并将其设置为令牌?谢谢@MrD结合使用cookies和session@xTCx我不确定,但我认为尼古拉所指的“代币”类似于暂时性的。。只是在每次页面加载时重新生成的唯一字符序列。表单通过隐藏输入从客户端发送,您可以在服务器端根据表单提交进行验证,即
if($\u POST['nonce]!=$\u SESSION['nonce']){//表单提交无效…
但nonce通常用于禁止没有权限的人执行操作,不是吗?还是我错了?老实说,我无法获得一个好的教程…谢谢。我假设上面的错误会显示在页面的一开始,不是吗?有没有办法把它放在我想要的地方lly?它在页面上的显示位置取决于您在php脚本(例如“action.php”)中实际打印错误消息的位置。您可以在表单之前或之后使用它,这是您的选择。好的,谢谢,我得到了它。我认为使用jquery ajax调用会更容易,这使我可以更明确地选择将错误放置在何处。
 print('<p class="warnings">The username is too short; it must be between X and Y characters.</p>');
 require('yourform.php');