C# 如何在查询字符串中安全地包含密码
是否可以在c#asp.net站点的查询字符串中安全地包含密码 我知道的一些假设和事情-C# 如何在查询字符串中安全地包含密码,c#,asp.net,encryption,passwords,query-string,C#,Asp.net,Encryption,Passwords,Query String,是否可以在c#asp.net站点的查询字符串中安全地包含密码 我知道的一些假设和事情- 该网站没有也不会有与其他网站的链接/图片/javascript/分析。所以没有推荐链接可担心 与web浏览器的所有通信都将通过https进行 我知道查询字符串将保留在 电脑 登录时需要的不仅仅是密码/用户名。这么简单 将url粘贴回浏览器不会导致登录 我知道该站点可能容易受到跨站点脚本和重播攻击。如何缓解这些问题 鉴于上述情况,我应该如何在查询字符串中包含密码 请不要问我“为什么”,我知道这不是一个好主意,但
如果上述选项都不可行,那么您可以尝试在通过开放URL发送密码之前使用JavaScript对密码进行加密。我找到了一个开源版本。该项目被调用并支持128到256位加密。可能还有其他JS库也做同样的事情。通常不建议将机密放入查询字符串中,然后可以对其进行图书标记和复制,从而在历史文件、cookie等中公开静态密码 为了在这个用例中保护密码,可以选择散列密码(单向,不可逆)。这样,在传输过程中或静止时都不知道实际密码,但。。。这意味着攻击者仍然可以使用哈希值登录到服务器,该服务器可能会将哈希值与其存储区进行比较以进行身份验证 更新:切换到无状态(JWT)会话 在过去,四轮马车是一种东西(好吧,它们仍然是一些边缘团体的东西,但是),我们使用“会话”。 例如,在基于Java/J2EE/Servlet的系统中,“会话ID”(参见JSESSION_ID)被存储为cookie。该值是一个随机数,很难猜测,但它存在着从劫持到内存以及服务器上的查找开销等问题 2020年(截至本文撰写之时)。。。JSON Web令牌(JWT)可用于安全地封装用户会话信息,并在不可更改的cookie中向下推送,而无需公开密码,且服务器开销很小 在这个模型中,在登录之后,服务器发出一个令牌(使用OAUTH2或相关的),该令牌有一个过期时间戳 然后,这些数据和其他可能的会话信息可以被加密、散列、签名并封装在JWT(令牌)中,作为cookie返回到web浏览器 参考: 在这一点上,客户机不能做任何事情来破坏(甚至查看)cookie,因为任何敏感数据都应该被加密(使用AES256等或更好的方法),并且内容被散列,散列被签名。这意味着当服务器取回令牌时,它