当我想建立一个登录系统时,我总是将给定密码的MD5与服务器端用户表中的值进行比较.
然而,我的一个朋友告诉我,一个"清晰"的密码可能会被网络软件嗅到.
所以我的问题是:在客户端散列密码是个好主意吗?它比在服务器端散列更好吗?
我刚刚读到了斯坦福Javascript加密库(jsfiddle示例),它完全支持javascript中的SHA256,AES和其他标准加密方案.该库似乎非常漂亮,但我不知道它的合理用例.
正如一些问题已经指出的那样,客户端加密并不是将安全数据传递到服务器的安全方法.应该使用HTTPS.那么,是否有任何项目可以从中受益或需要客户端加密?
我想加密客户端上的密码(angular.js),将其发送到服务器(express.js)并在服务器上解密.我想要一个简单的方法.我使用$ http来POST请求.我知道退出angular-bcrypt库和nodeJS中的相同,但对我来说不值得,因为它只有方法比较.
我想要这样的东西:
password = document.getElementById('txtPassword').value;
var xorKey = 129; /// you can have other numeric values also.
var result = "";
for (i = 0; i < password.length; ++i) {
result += String.fromCharCode(xorKey ^ password.charCodeAt(i));
}
Run Code Online (Sandbox Code Playgroud)
但是,我只在c#中找到了解密方法:
public bool Authenticate(string userName, string password)
{
byte result = 0;
StringBuilder inSb = new StringBuilder(password);
StringBuilder outSb = new StringBuilder(password.Length);
char c;
for (int i = 0; i < password.Length; i++)
{
c = inSb[i];
c = (char)(c ^ 129); /// …Run Code Online (Sandbox Code Playgroud) 作为示例,我有一个 Vue.js 应用程序。加载应用程序时,我通过 HTTPS 从服务器获取一些敏感数据并将其存储在 Vuex Store 客户端中。
有没有什么方法可以让人们通过浏览器中的开发人员工具或其他方式读取该数据?安全吗?有人可以用同样的方式向 Vuex Store 写入数据吗?
我读过这些:
...而且我仍然认为在客户端哈希您的密码会更好。让我解释。
引用的第一篇文章主张您应该使登录页面独立,因为无法信任客户端使用的整个代码库。我认为这是有道理的。
并且,如果有道理,您如何信任服务器端使用的整个代码库?
上面有很多如此高调的答案声称“由于TLS存在,所以不要在客户端进行哈希处理”。确实可以防止密码被窃听,但是与我们的潜在恶意服务器端代码无关。
另外,如果已经对密码进行了哈希处理,则服务器端也无理由对其进行哈希处理。如果您的服务器被破解,则无论密码如何,您都已经完成了,但是破解者无法在其他任何地方使用获得的密码。
但是,由于我找不到这样的答案,因此我的发言似乎从根本上是错误的。我想念什么?
在下面的代码中,我想隐藏浏览器控制台正在查看的密钥(扬声器)密钥的内容.
var App_Version = 1;
var App_id = 35;
var Speaker = "password";
Run Code Online (Sandbox Code Playgroud) javascript ×4
client-side ×2
encryption ×2
hash ×2
passwords ×2
security ×2
angularjs ×1
asp.net ×1
express ×1
jquery ×1
node.js ×1
reactjs ×1
vue.js ×1