这可能是一个老问题,但我仍然没有找到这个问题的正确答案,所以请耐心等待。我有一个 https 登录页面,它使用表单发布方法并将凭据发送到服务器......等等。
登录时,如果使用IE和F12进行网络监控,点击开始抓包。您可以看到一些类似于 login、servetloginauth(来自 gmail.com)的 URL,并且您可以看到包含您的用户名和密码的请求正文。好吧,可以争辩说,只有当用户没有注销时,您才能看到这一点。
现在注销并且不要关闭浏览器并从任务管理器中获取浏览器转储(任何浏览器,任何版本)(我不知道如何在 Mac 中做同样的事情)。使用 WinHex 编辑器打开转储文件并执行 Search/Find: "password=" 或实际密码(因为您测试了您自己的登录信息,您已经知道您的密码)。您可以以明文形式查看密码。
现在我的问题是,如何屏蔽密码: 1. 在 Post 请求 URL 中 2. 或者当浏览器将我的凭据保存到转储时,我需要对其进行屏蔽/加密或根本不应该保存密码.
我的jsp代码:
<s:form id="login" name="loginForm1" action="login" namespace="/" method="post" enctype="multipart/form-data" >
<fieldset><!-- login fieldset -->
<div><!-- div inside login fieldset -->
<div....
<label for="password" class="loginLabel">Password</label>
<input type="password" name="password" id="password" class="longField nofull absPosition" size="16" autocomplete="off" alt="Password" placeholder="Password" title="Password|<
Run Code Online (Sandbox Code Playgroud)
我目前的解决方案如下,但我不需要太多努力就需要任何替代方案。
如果密码以明文形式发送,则可以从内存中读取密码。使用加盐散列技术进行密码传输将解决此问题。散列是一种密码技术,其中的实际值永远无法恢复。在加盐散列技术中,密码以散列形式存储在数据库中。服务器生成一个随机字符串盐,并将它与登录页面一起发送到客户端。页面上的 JavaScript 代码计算输入密码的哈希值,连接盐并计算整个字符串的哈希值。该值在 POST 请求中发送到服务器。
然后服务器从数据库中检索用户的散列密码,连接相同的盐并计算散列。如果用户输入了正确的密码,这两个哈希值应该匹配。
现在,POST 请求将包含密码的加盐哈希值,而明文密码将不会出现在内存中
SHA 256 是当今可用的强大散列算法 - JavaScript 中的现成实现可用并在“良好阅读”部分引用。
注意:对于包含敏感信息的页面或在数据库中可以修改数据的页面,使用 JavaScript 来刷新浏览器的内存
和图像如下。
另外,我可以解决花旗银行在其网站上为客户所做的事情。我登录了网站并在转储中看到我的用户名被屏蔽了(如网站中所示),我也需要对密码字段执行相同操作的内容。有人可以解释我该怎么做吗?
这是我正在学习的示例代码.我想取一个字符串(1个或多个字符)并将其与现有字符串进行比较.我想输入蓝色仍然得到答案.怎么完全忽略这个案子?谢谢.
parrot = "Norwegian Blue"
letter = input("Enter a character: ")
if letter in parrot:
print("The letter {0} is in the Norwegian Blue".format(letter))
else:
print("Sorry the letter is missing ")
Run Code Online (Sandbox Code Playgroud)
成功案例:
C:\PythonMasterClass>python IfProgramFlow.py
Enter a character: Blue
The letter Blue is in the Norwegian Blue
Run Code Online (Sandbox Code Playgroud)
对于失败的案件:
C:\PythonMasterClass>python IfProgramFlow.py
Enter a character: blue
Sorry the letter is missing
Run Code Online (Sandbox Code Playgroud)
我检查了其他线程将我的输入和实际文本转换为小写并进行比较,但我想要一个直接的方法.如果我有多个字符串,我不想为了这个目的将它们全部保存在小写字母中.谢谢.