gpt4 book ai didi

c# - 如何在查询字符串中安全地包含密码

转载 作者:太空宇宙 更新时间:2023-11-03 19:18:19 25 4
gpt4 key购买 nike

是否可以在 c# asp.net 站点的查询字符串中安全地包含密码。

我知道的一些假设和事情 -

  1. 该站点没有也不会有与其他站点之间的链接/图像/javascript/分析。因此无需担心引荐来源链接。
  2. 与网络浏览器的所有通信都将通过 https。
  3. 我知道查询字符串将保留在计算机。
  4. 登录需要的不仅仅是密码/用户名。如此简单将 URL 粘贴回浏览器不会导致登录。

我知道该站点可能容易受到跨站点脚本和重放攻击。我该如何减轻这些?

鉴于上述情况,我应该如何在查询字符串中包含密码?

请不要问我“为什么”,我知道这不是一个好主意,但这是客户想要的。

最佳答案

SSL

您可以使用 SSL 连接安全地将密码发送到 Web 服务器。这会加密客户端/服务器之间的所有通信。

隐藏在标题中

基本身份验证协议(protocol)将用户/密码信息放在 HTTP 请求 header 中。 C# 和许多其他 Web 服务器语言可以访问此信息,并使用它来验证请求。当与 SSL 混合时,这是非常安全的。

注册一个应用程序 key

如果以上都不可能,那么建议您为每个用户创建一个唯一的 key 。而不是发送他们的密码,使用这个 key 。优点是 key 存储在数据库中,可以删除。用户的密码保持不变,但他们必须重新注册才能获得新 key 。如果有人可能滥用他们的 key ,这很好。

执行握手

握手是客户端向服务器发出请求,服务器发回一个随机生成的 key 。然后,客户端使用 secret 从该 key 生成哈希,并将其发送回服务器。服务器然后可以检查客户端是否知道正确的 secret 。同样的事情可以在密码是 secret 的情况下完成,并且客户端在请求中包含用户名详细信息。这可以在不发送密码的情况下进行身份验证。

加密密码

如果以上都不是可能的选项,那么您可以尝试使用 JavaScript 在通过开放 URL 发送密码之前对其进行加密。我找到了一个开源版本 AES block cipher .该项目称为 JSAES并支持 128 到 256 位加密。可能还有其他 JS 库做同样的事情。

关于c# - 如何在查询字符串中安全地包含密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14409930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com