如何强制执行单页面Web应用程序安全性?

时间:2013-01-17 17:11:30

标签: javascript angularjs security

例如我正在使用AngularJS编写一个Web应用程序,它会为用户存储机密信息,如信用卡号。

我在想我应该使用哪些安全协议。我没有安全经验,所以我发现自己在这类问题上无能为力。我已经整理了一些要求:

  • 客户端永远不会受到保护,因此服务器需要对用户身份进行自己的验证。
  • 服务器无法将密码作为纯文本存储在数据库中,而是一个不可逆转的修改后的字符串。
  • 通过互联网发送密码不安全,因此服务器无法要求提供原始密码。

我很困惑到这一点,因为要求似乎与自己相矛盾。我必须对用户密码执行不可逆转的转换,而我的服务器不能要求原始,这意味着转换只能在客户端进行。另一方面,您永远不会信任客户端,因为它对用户开放并且容易被黑客攻击。

是否有任何现有的安全协议/框架可以解决我提到的问题?

2 个答案:

答案 0 :(得分:1)

1)如果您正在处理任何类型的机密信息,您应该使用https。这将允许密码从客户端发送到您的服务器。 2)在密码创建时将其哈希,并将该哈希保存在数据库中。在将来的登录时,您可以散列提供的密码并比较散列值。

3)如果您正在处理信用卡信息,那么您需要考虑其他一些东西。您应该快速了解PCI要求(如果您要保存信用卡信息),如果您只是想处理信用卡,我建议将其委托给第三方资源,如Stripe。他们将为您处理所有卡片安全问题。

答案 1 :(得分:1)

您还应该考虑清理和验证用户输入,以避免SQL注入,跨站点脚本等。