Java JSP中隐藏变量的加密

Java JSP中隐藏变量的加密,java,jsp,encryption,jakarta-ee,Java,Jsp,Encryption,Jakarta Ee,jsp中的用户SSN在html页面的源代码中显示为: 显然,将SSN作为主键是不好的——但您可能无法更改这一点 请查看此OWASP页面:: 防止不安全的直接对象引用需要选择一种方法来保护每个用户可访问的对象(例如,对象编号、文件名): 使用每用户或会话间接对象引用。这可防止攻击者直接攻击未经授权的资源。例如,不是使用资源的数据库键,而是为当前用户授权的六个资源的下拉列表可以使用数字1到6来指示用户选择的值。应用程序必须将每个用户的间接引用映射回服务器上的实际数据库密钥。OWASP的ESAPI包括

jsp中的用户SSN在html页面的源代码中显示为:


显然,将SSN作为主键是不好的——但您可能无法更改这一点

请查看此OWASP页面::

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

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

  • 我使用了他们ESAPI中的访问参考图——这非常简单。我们的唯一ID被简单地替换为随机字符串,这些字符串绑定到用户的会话。

    显然,将SSN作为主键是不好的,但您可能无法更改这一点

    请查看此OWASP页面::

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

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

  • 我使用了他们ESAPI中的访问参考图——这非常简单。我们唯一的ID被随机字符串取代,随机字符串与用户会话绑定。

    一个明显的选择是只编写自己的encryptian函数。你可能不打算写一些像那些大牌安全人员想出的那样安全的东西,但根据上下文,一些简单的东西可能就足够了,例如,一些会挫败偶尔窥探者的东西,并接受如果中情局或Mosad或任何人试图破解你的加密机,他们会在几分钟内找到答案。我不知道你是黑客的目标有多大。如果你在一家银行或美国国税局或其他机构工作,那里可能有很多人试图拦截你的交易,而且拦截的后果很严重,算了吧,你想要的是工业级安全。但是,如果你在Joe的宠物护理建议交换论坛工作,除了SSN本身,没有特别敏感的信息,也没有太多的敌人来攻击你,那么一个自制的解决方案可能就足够了。

    一个明显的选择是只编写自己的加密函数。你可能不打算写一些像那些大牌安全人员想出的那样安全的东西,但根据上下文,一些简单的东西可能就足够了,例如,一些会挫败偶尔窥探者的东西,并接受如果中情局或Mosad或任何人试图破解你的加密机,他们会在几分钟内找到答案。我不知道你是黑客的目标有多大。如果你在一家银行或美国国税局或其他机构工作,那里可能有很多人试图拦截你的交易,而且拦截的后果很严重,算了吧,你想要的是工业级安全。但是,如果您在Joe的宠物护理建议交换论坛工作,除了SSN本身之外,没有特别敏感的信息,也没有太多的敌人来攻击您,那么一个自制的解决方案可能就足够了。

    由于SSN的敏感性,您应该在数据库端加密您的SSN。SSN不应存储为纯文本值,因为它们对于黑客访问是完全可见的。看看索尼,还有更多的公司被黑客攻击

    我想说的是使用数据库加密函数在数据库中加密它们。我不知道你的目标是什么数据库(MySQL或Oracle等)。然后,您可以使用数据库中加密的SSN。以下是mysql参考:
    由于SSN的敏感性,您应该在数据库端加密SSN。SSN不应存储为纯文本值,因为它们对于黑客访问是完全可见的。看看索尼,还有更多的公司被黑客攻击

    我想说的是使用数据库加密函数在数据库中加密它们。我不知道你的目标是什么数据库(MySQL或Oracle等)。然后,您可以使用数据库中加密的SSN。以下是mysql参考:

    “设置编码标准“不允许”此导入”您能解释一下这是什么意思吗?当然可以。用两个词来说,这就是胡说八道的官僚作风。在解释中,我们的顶层有一层基于ant脚本“构建”代码。这些构建脚本有一组允许的导入,可以在源代码中使用。如果源代码包含这些导入之外的任何内容,则生成将失败并给出“checkstyle”错误。我可以请求允许
    javax.crypto
    ,但是,这将经过一次大的审查,我非常确定