Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
永远存在的PHP安全认证_Php_Mysql_Security_Authentication_Authorization - Fatal编程技术网

永远存在的PHP安全认证

永远存在的PHP安全认证,php,mysql,security,authentication,authorization,Php,Mysql,Security,Authentication,Authorization,我计划写一个javascript插件,它将被放在几个不同的网站上。插件说,根据当前登录的用户,将当前访问的网站添加到我的数据库中 我的网站的用户可以使用用户名/电子邮件和密码登录。现在我想在用户浏览器的cookie中存储一个永远不会过期的访问令牌,这样每次他/她点击插件书签按钮时,javascript都会抓取cookie并将请求发送给服务器,以便服务器知道是谁生成了它 我的问题是,安全的方法是什么?我可以简单地将用户id存储在cookie中,但任何用户都很容易模拟它。如果我用MD5散列加密用户i

我计划写一个javascript插件,它将被放在几个不同的网站上。插件说,根据当前登录的用户,将当前访问的网站添加到我的数据库中

我的网站的用户可以使用用户名/电子邮件和密码登录。现在我想在用户浏览器的cookie中存储一个永远不会过期的访问令牌,这样每次他/她点击插件书签按钮时,javascript都会抓取cookie并将请求发送给服务器,以便服务器知道是谁生成了它

我的问题是,安全的方法是什么?我可以简单地将用户id存储在cookie中,但任何用户都很容易模拟它。如果我用MD5散列加密用户id,那么每次用户登录时,散列都是相同的,可以作为用户id,因此不是解决方案。你会给我推荐什么解决方案?还请给我写下其算法的链接。

基于浏览器中存储的数据的某种协议-可能在浏览器上使用来存储密钥,该密钥以加密方式与服务器的“质询”相结合,以响应“响应”散列-经服务器验证后,允许用户继续

这不会保护用户的浏览器,但会使外部观察者(他们可能会以某种方式击败SSL——您应该使用HTTPS!)难以执行重播攻击


示例协议:(客户端)

更新了指向MDN的本地存储链接。@David,如果你是我,你必须在cookie中存储一些标识用户的内容,并且这些内容将永远保存在用户的计算机上,除非明确注销或删除cookie,你会存储什么?在存储之前,您会使用什么算法对数据进行加密以确保最大的安全性?您存储的内容(非常大的数字就足够了)并不重要。如果攻击者能够打开用户的浏览器,游戏就结束了。这种方法可以防止全能的窃听者从不同的浏览器中冒充您的用户。Wikipedia文章中的任何示例链接都可以:-)那么您的意思是没有办法让用户始终登录以确保安全?