登录系统(PHP)Cookie和会话

hat*_*ter 7 php cookies session

我想使用cookie/session建立一个登录系统,但我不确定它们的安全性是什么样的.

对于会话,如果"login"设置为"yes",我可以相信吗?用户是否能够改变它返回的内容?我应该只存储加密密码并在每个页面上进行检查吗?

使用cookies,我是否需要检查mysql注入等内容?

这可能听起来像初学者的东西,但如果有人能为我澄清它会真的有用.在此先感谢您的回复!

cle*_*tus 7

如果设置会话变量,则除非用户劫持另一个会话cookie,否则用户无法直接更改它.

您主要需要注意的是共享主机,您的会话数据不安全(通常其他网站可以看到它).

值得注意的是,cookie数据也不安全.它不应该依赖于不应该依赖表单数据的方式(无论客户端验证告诉你什么).

您使用密码的最佳做法是:

  1. 以密码形式将密码存储在数据库中,最好是SHA1(第一选择)或MD5(第二选择);
  2. 当您收到用户的密码时,对其进行加密并根据存储在数据库中的内容进行检查;
  3. 在用户会话中设置登录的用户名;
  4. 在一段时间后(即使它的日子)过期cookie,而不是永远持续; 和
  5. 尽可能使用安全连接(HTTPS而不是HTTP).SSL证书很便宜.

  • 这个答案中有些过时的东西.不要将SHA1或MD5用于密码:http://stackoverflow.com/questions/1581610/how-can-i-store-my-users-passwords-safely (3认同)

Cra*_*loy 5

正如这里的几个人所说,不要相信用户输入 - 永远.通过清理您的输入,特别是用户名和密码字段,您可以帮助抵御SQL注入攻击.

对于所有好的和神圣的东西,不要在cookie中存储用户名或密码,它们会在每次请求时来回发送到服务器,任何观看流的人都可以抢夺这些数据......然后你就麻烦了.

这里有一些你应该阅读的关于会话,安全性和散列的文章 - 只是将你的密码哈希到SHA1或MD5是不够的,加盐它们以便它们更加强大.没有难以捉摸的安全性 - 即使你做了一切正确的人也可以打破它 - 这是不可避免的.你的工作是让事情尽可能难以打破/利用.

侵入您的网站所涉及的工作越多,您的内容就越值得付出努力.你的工作是阻止恶意用户.

本文提供了一些有关为访问者创建唯一指纹的好消息,有助于使会话劫持更​​加困难 - PHP安全指南:会话

本文介绍基本密码哈希和腌制技术 - 密码哈希

这绝不是一个尽头而已全部 - 你可以做一个安全等事业,但他们是一个很好的起点.这里的某人可能会指向更好/更高级的文章,但我个人发现这些文章有助于支持我的代码.