【发布时间】:2015-06-16 10:00:14
【问题描述】:
我在 Java EE 7 后端使用 AngularJS 和 REST API。 该项目部署在 Wildfly 应用服务器上,我有一些关于证券评级的问题:
为了加密/解密数据,我使用 CryptoJS 在服务器端 (Java) 加密和解密,但显然我们必须以明文形式发送密码,密码和盐只加密。 我的问题是为什么密码是明文?它应该是秘密的,然后也加密了?
对于 REST API,Java EE 7 使用的标准是什么,HTTP 安全标头 (basic-auth)? Json 访问令牌?以及它是如何工作的,在 cookie 上存储用户会话/令牌的位置?我只是想知道如何使用 Angular 来做到这一点。
也许我可以将经典 JAAS 与基于表单的身份验证一起使用,然后在服务器端使用 request.login() 进行身份验证,然后我的 EJB 将全部受到 @Role 的保护。
在 AngularJS 中保护页面的方法是什么?目前我正在使用 web.xml 并放置 URL 模式,也许有更好的方法?
我已经找到了很多这样的例子:
AngularJs and Jboss and JAAS(全方位安全)
how to integrate angularjs and java jaas based authentication?
一些用户提到这一点:
* index.html page should contain token inside html to avoid CSRF
* token shouldn't be stored in a cookie storage
* Each request should be signed with header param
* Server should validate every request by passed header
* If cookie usage is a must you should validate referer in order to prevent CSRF
但是没有具体的例子说明如何实现这一点,尤其是 CSRF。
【问题讨论】:
-
您的第 1 点听起来很令人担忧。 CryptoJS 是一个 javascript 库,您是否真的在服务器端使用 nashorn 或其他东西,或者您的意思是说您在 javascript 的客户端使用它?您从哪里发送密码短语以及将其发送到哪里?用于(身份验证、用于加密的 PBKDF 等)的密码是什么?你不需要加密盐,这被认为是公开的。
标签: java angularjs rest security java-ee-7