Cookies “保存身份验证信息时”;Cookie不能被信任”;

Cookies “保存身份验证信息时”;Cookie不能被信任”;,cookies,Cookies,假设: 当用户登录时,也会选中“记住我” 我检查发现他是有效的 我将“true”保存在会话变量中 我还保存了一个带有“true”的cookie 用户关闭浏览器,稍后返回并打开站点 我检查饼干上写着“真”,这样我就可以让他自动登录了 这是对网站一般工作方式的正确描述吗?还是我的脚步有什么问题 我越来越好奇,因为我一直在读像这样的东西- 永远不要相信用户的输入。Cookie也是用户输入,因此永远不要信任它们 通过嗅探,可以发现cookies,有人可以破坏系统 如果Cookie对安全性如此不可靠,

假设:

  • 当用户登录时,也会选中“记住我”
  • 我检查发现他是有效的
  • 我将“true”保存在会话变量中
  • 我还保存了一个带有“true”的cookie
  • 用户关闭浏览器,稍后返回并打开站点
  • 我检查饼干上写着“真”,这样我就可以让他自动登录了
  • 这是对网站一般工作方式的正确描述吗?还是我的脚步有什么问题

    我越来越好奇,因为我一直在读像这样的东西-

    • 永远不要相信用户的输入。Cookie也是用户输入,因此永远不要信任它们
    • 通过嗅探,可以发现cookies,有人可以破坏系统
    如果Cookie对安全性如此不可靠,我应该如何持久保存登录信息



    我正在ASP.Net上工作。我只是在尝试我自己的身份验证。

    通常,您创建某种令牌,对其进行加密,然后将加密的令牌放回cookie中。这就是Asp.Net表单身份验证的工作原理。你也可以考虑伪登录。如果你有cookie,你可以在这里做一些事情,但是你必须登录才能做一些更重要的事情。例如,您可以在Amazon上浏览推荐,但您必须登录才能订购一些东西。

    这主要取决于您存储的关于用户的信息类型、用户拥有的访问权限等。。例如,是否唯一的目的就是要确定一个帐户,就像在公共论坛上一样?或者您是否在存储地址、电话号码、信用卡信息等个人信息。。?如果是后者,您将希望避免使用cookies进行持久登录

    但一般来说,您不应该只在cookie中存储一些“真”值并进行检查。我个人所做的(对于安全性不是很大问题的站点)是创建一个自定义函数,该函数接受IP地址并使用自定义算法将其模糊化为字符串。然后使用sha1()(php)或其他方法加密字符串。然后将该加密字符串存储为cookie值


    当用户返回时,我基本上在请求的IP上运行相同的自定义加密函数,并查看它是否与cookie值匹配。是的,IP地址可以更改,如果不匹配,我会提示用户实际登录并更新cookie值

    第一件事是怎么做的?令牌和加密。。。现在有没有你知道的文章或东西,我可以在哪里读到?这取决于你使用的平台。如果您正在使用Asp.Net,我会使用现有的功能,而不是使用自己的功能。你没有提到你在为哪个平台开发,但是大多数人应该已经有了解决这个问题的方法。嗯。。不能有人拦截中间的请求,找出Cookie值并开始用那个值发送请求吗?如果这是可能的,你怎么能确定这已经发生了。。是的,他们无法解密,但这没关系。只要该值作为cookie传递,系统就会接受它,对吗?这就是为什么我在加密cookie值之前会混淆cookie值中的IP地址。然后,当用户发出请求时,我检查cookie并比较IP地址。如果有人要嗅探数据包以尝试会话劫持,他们首先需要解密字符串,然后找出我的IP地址隐藏在那里的某个地方,然后在请求中伪造他们自己的IP地址以匹配它。如果有人可以截获并查看您的通信,通常他在通信路径上。比如说,他控制着一个路由器(例如,你正在连接的无线网络)。然后他可以使用和你相同的IP地址。