我想在登录页面上包含"记住我"功能,但我不知道它的实际含义(它的工作原理).我在许多网站上看到了不同的用途,但我没有得到它的实际意义.
我正在开发一个基于PHP的登录系统.每个用户都有一个ID(一个数字)和一个密码,它被存储为盐渍哈希.
我能够确定登录是否成功,但现在我需要在某处存储该信息(以便用户不会永久注销).
在过去,我玩过$ _SESSION变量.但是,这些似乎在用户离开浏览器时被删除,这是不希望的.此外,我不能"假设"用户不会试图欺骗系统,因此它必须是安全的.
所以,这是我的问题:
$_SESSION或$_COOKIE?每种方法的主要优点是什么?请注意,在此特定问题中没有考虑数据库安全问题.
关于3号,我的意思是:
我想让我的网站尽可能安全但高效且用户友好.如果采用基于SessionID的方法,我也会对如何将其存储在数据库中的一些解释表示赞赏.
先感谢您
编辑:伊兰和布莱恩的答案似乎是我需要的.不幸的是,我只能将其中一个标记为已接受.我会尝试继续实施,看看哪一个更有用.
我刚与一位同事进行了对话,并谈论了V8 JavaScript引擎.根据维基百科,
V8在执行之前将JavaScript编译为本机机器代码,而不是更传统的技术,例如解释字节码或将整个程序编译为机器代码并从文件系统执行.
where(纠正我,如果我错了)" 解释字节码 "是Java的工作方式," 编译整个程序 "将适用于C或C++等语言.现在我们想知道,辩论并提出关于差异,相似性的错误断言和推定.为了结束这一点,我建议询问SO专家.
那么,谁能够
笔记:
compiler-construction interpreter compilation interpretation
我的网站有一个登录系统,存储在数据库中的用户的详细信息是userid(每个用户和标识符唯一),电子邮件地址(唯一),显示名称(不唯一),密码和membersince.
现在我应该在饼干中存储什么?我正在考虑将用户ID存储在cookie中,并且过期日期然后如果用户在注册后重新访问我的网站检查cookie并将其登录(对我来说哪种看起来不对)并销毁cookie如果他决定退出
*一点点解释也会非常有帮助.谢谢
我正在编写一个"记住我"的登录表单,到目前为止我读过的教程(部分是为了确保我做得对)都说要将加密的密码存储在cookie中用户名.然后,每次PHP检查当前用户是否未登录时,请检查其cookie并查找这些值.如果用户名与密码匹配,则表示您已进入.
对我而言,这是一个巨大的安全漏洞.如果有人要破解数据库或以某种方式访问加密密码,他们甚至不需要破解它们.只需设置自己的cookie即可.我是正确的,还是只是偏执狂?
我的登录系统使用会话来跟踪当前用户ID,并使用1/0进行快速登录/注销检查.用户无法编辑会话AFAIK,因此这是安全的(如果不是,请告诉我).我只想将会话ID存储在cookie中,以后再恢复它,但这也不安全.
我非常关心用户的安全性,如何在保持功能正常的网站的同时妥善保护他们的信息?
登录网站时会发生什么?
我知道存储cookie和一些信息(什么信息?)被发送到服务器......但也许更详细一些?
如果用户登录该网站,并说"记住我",我们会获得该用户的唯一标识符,使用密钥大小为256的RijndaelManaged加密,并将其放入一个设置过期的httponly cookie中.120天,每次成功请求刷新到服务器的到期时间.
可选地,我们基于用户代理和ipv4地址的一部分(最后两个八位字节)生成初始化向量.
显然,没有真正的到期系统,用户可以在技术上永远使用这个加密密钥(假设我们不更改服务器端密钥).
我考虑过这样一个事实,即允许这个功能,我需要允许用户绕过登录并给我他们唯一的ID(这是一个guid),我认为单独的guid很难猜到一个真正的用户guid,但是会让网站开放受到生成guid的botnots的攻击(我不知道他们找到一个合法的guid是多么现实)..所以这就是为什么服务器知道加密密钥的加密,以及可选的iv特定于浏览器和ip部分.
我是否应该考虑服务器发出与用户关联的票证的不同方法,并且这些票证将具有已知的到期日期,以便服务器保持对期满的控制权?我真的应该关心到期吗?还记得我记得我吗?
期待被贬低;),干杯.
我正在为一个新的PHP站点开发一个登录和身份验证系统,并且已经阅读了各种攻击和漏洞.但是,它有点令人困惑,所以我想检查一下我的方法是否有意义.
我计划存储以下数据:
在会话中: user-id,hashed + saltedHTTP_USER_AGENT
在cookie和数据库中:随机令牌,散列+盐渍标识符
在每个页面上,我计划执行以下操作:
如果存在会话,请使用该进程进行身份验证.检查是否HTTP_USER_AGENT与存储的会话中的匹配.
如果不存在会话,请使用cookie进行身份验证.检查cookie中的标记和标识符是否与数据库中的标记和标识符匹配.
如果cookie无效或不存在,请要求用户登录.
这有什么明显的缺陷吗?只要我在cookie中设置超时,我应该相当安全,对吧?有什么我想念的吗?
提前谢谢了.
我想在浏览器cookie中保存用户的身份验证信息以进行持久登录.正如他们所说,它永远不会安全地在cookie中存储任何秘密信息(如密码),但为了有一个选项,如"记住密码",我认为没有任何其他选择.
因此,如果用户想要记住他的登录信息,并且我存储用户名(电子邮件)+不是密码,而是存储其他一些独特信息,例如cookie中的HASHED DB ID.然后我应检查存储在cookie中的散列ID是否与存储在Cookie中的用户电子邮件匹配.我认为任何人都可以很容易地看到存储在浏览器中的cookie(例如在Firefox中,选项 - > Cookies).
那么这就像有人从保存的计算机中读取cookie一样弱,然后在其他计算机上设置带有该信息的cookie并且他将登录?(因为脚本将检查存储的电子邮件并使用数据库散列id并且它将匹配)?
如果不在数据库中存储其他信息(例如会话ID等),这种方法可以改进吗?谢谢
我想知道在数据库中使用哪种方法来存储密码.我使用MD5实现了它,但根据一些帖子,SHA1更安全.还有其他更安全的方法吗?请帮我找出保护密码的最佳方法.
cookies ×5
login ×5
php ×5
security ×4
remember-me ×3
session ×2
c# ×1
compilation ×1
interpreter ×1