加密JSP中的隐藏变量

Omn*_*ent 1 java encryption jsp java-ee

我们在jsp中有用户SSN,它在html页面的源代码中显示为:

<a href="onclick:submitsomeform(123456789)"

为了避免这种情况,我做了几个方法叫做getEncryptedSSN()以及getDecryptedSSN()可能从JSP被调用.这些方法使用了javax.crypto加密/解密ssn字符串,但是,这种导入是"disallowed"通过设置编码标准.所以现在我没有选择如何避免在HTML的视图源中显示SSN.我们不能在表单提交中不通过SSN的路由,因为在DB中,SSN字段是唯一的主要字段.

有没有其他方法可以简单地加密/解密java中的字符串w/out使用javax.crypto

Dav*_*vid 6

显然,将SSN作为主键是不好的 - 但您可能无法改变它.

看看这个OWASP页面:不安全的直接对象参考:

防止不安全的直接对象引用需要选择保护每个用户可访问对象的方法(例如,对象编号,文件名):

  1. 使用每个用户或会话间接对象引用.这可以防止攻击者直接针对未经授权的资源.例如,代替使用资源的数据库密钥,授权给当前用户的六个资源的下拉列表可以使用数字1到6来指示用户选择的值.应用程序必须将每用户间接引用映射回服务器上的实际数据库密钥.OWASP的ESAPI包括顺序和随机访问参考映射,开发人员可以使用它们来消除直接对象引用.
  2. 检查访问权限 每次使用来自不受信任来源的直接对象引用都必须包含访问控制检查,以确保用户获得所请求对象的授权.

我已经使用了他们的ESAPI中的Access Reference Map - 它非常简单.我们的唯一ID只是被随机字符串替换,后者与用户的会话相关联.