Javascript 客户端登录是否安全?

Javascript 客户端登录是否安全?,javascript,security,login,Javascript,Security,Login,客户端登录到某个页面(例如example.html)是否可以通过使用哈希等来确保安全。? 我问这个问题主要是出于好奇,但可能会有一些使用案例,比如GitHub页面的CMS或任何驻留在浏览器中但需要验证用户身份的任意无服务器应用程序 例如,如果您有一个x.txt文件,其中存储了密码的一个盐渍散列,并且您将密码的输入与它进行比较,那么如果密码足够强大,那么您本身就具有相当的安全性。 但是,由于一些怀有恶意的家伙可以直接删除您的JavaScript,这将是毫无价值的,因为身份验证可以绕过 我想到的是存

客户端登录到某个页面(例如example.html)是否可以通过使用哈希等来确保安全。? 我问这个问题主要是出于好奇,但可能会有一些使用案例,比如GitHub页面的CMS或任何驻留在浏览器中但需要验证用户身份的任意无服务器应用程序

例如,如果您有一个x.txt文件,其中存储了密码的一个盐渍散列,并且您将密码的输入与它进行比较,那么如果密码足够强大,那么您本身就具有相当的安全性。 但是,由于一些怀有恶意的家伙可以直接删除您的JavaScript,这将是毫无价值的,因为身份验证可以绕过

我想到的是存储一个带有密码散列的cookie,只显示不需要登录的站点。如果需要,只需显示空白即可。 同样,js也可能被删除,因此毫无用处。

如果你知道某人是谁(身份验证),那就太好了,但你最终想要的是有选择地阻止或允许访问特定信息(授权)。如果您在客户端执行授权,服务器将不得不向客户端泄露所有信息,客户端有选择地决定显示或隐藏哪些信息。好吧,但是信息已经在客户端上了,而且技术上不可能阻止用户访问它,即使它是“幕后的”

因此,即使纯粹的客户端身份验证是可能的(出于同样的原因,事实并非如此),您最终也会在客户端授权中失败。

如果您知道某人是谁(身份验证),这很好,但您最终想要的是有选择地阻止或允许访问特定信息(授权)。如果您在客户端执行授权,服务器将不得不向客户端泄露所有信息,客户端有选择地决定显示或隐藏哪些信息。好吧,但是信息已经在客户端上了,而且技术上不可能阻止用户访问它,即使它是“幕后的”

因此,即使纯粹的客户端身份验证是可能的(出于同样的原因,事实并非如此),您最终也将无法通过客户端授权

但是,由于一些怀有恶意的家伙可能只是删除了你的JavaScript,这将是毫无价值的,因为可以绕过身份验证

没错。如果隐藏信息已经在客户端上,恶意用户可以通过编程绕过逻辑来访问它

要解决这个问题,您需要在服务器上存储隐藏信息,在服务器上需要特定的凭据才能访问它

解决这个问题的最简单方法是,不托管自己的服务器(AFAIK)。将隐藏的内容放在Firebase上,并利用它们的身份验证(使用Google登录)

但是,由于一些怀有恶意的家伙可能只是删除了你的JavaScript,这将是毫无价值的,因为可以绕过身份验证

没错。如果隐藏信息已经在客户端上,恶意用户可以通过编程绕过逻辑来访问它

要解决这个问题,您需要在服务器上存储隐藏信息,在服务器上需要特定的凭据才能访问它


解决这个问题的最简单方法是,不托管自己的服务器(AFAIK)。将您隐藏的内容放在Firebase上,并利用他们的身份验证(使用谷歌登录)。

客户端总是可以操纵的,它永远不会是100%safe@Nick正如我在问题中阐述的那样,这是显而易见的。我感兴趣的是如何做到这一点,而不是反过来:对不起,伙计,这是不可能做到的。这还取决于你的目标受众是谁,一个满是幼儿的教室不太可能侵入隐藏的页面:)@Nick我想说,如果你不十分小心,一个满是幼儿的教室是让你整个系统运转的最好方法@Nick一个满是孩子的教室确实不会入侵,但它对我的系统构成了不同的威胁^^客户端总是可以被操纵的,它永远不会是100%safe@Nick正如我在问题中阐述的那样,这是显而易见的。我感兴趣的是如何做到这一点,而不是反过来:对不起,伙计,这是不可能做到的。这还取决于你的目标受众是谁,一个满是幼儿的教室不太可能侵入隐藏的页面:)@Nick我想说,如果你不十分小心,一个满是幼儿的教室是让你整个系统运转的最好方法@尼克:一个满是孩子的教室确实不会侵入,但它对我的系统构成了不同的威胁^^