安全性:有没有办法使用对 char[] 的直接引用而不是字符串?

2023-12-02

前言:这可能是一个巨大的菜鸟错误,我团队中的所有开发人员都对 Java 101 有点模糊,所以如果我们不担心任何事情,请告诉我。[具体来说,担心在 permgen 中缓存的字符串文字]

我们有一个简单的登录页面,基本上如下所示: //支持 Bean“LoginBean”

  String username;
  String password;
  //getter/setter pairs

//JSF

  <h:form id="login">
    <h:inputText value="#{loginBean.username} />
    <h:inputSecret value="#{loginBean.password} />
    <h:commandButton actionListener="#{loginBean.login} />
  </h:form>

我在这里担心的是,传递的字符串文字可能会被缓存并打开潜在的安全漏洞。有没有办法进行设置,以便我们完全绕过字符串文字?如果这是一个 Swing 应用程序,我将使用 JPasswordField,它明确具有“char[] getPassword();”

或者在我想要的代码中:

String username;
char[] password;

感谢您的帮助,如果这是一个双重帖子,请随时打我,我似乎找不到它,但这似乎是一个核心问题。


我在这里担心的是,传递的字符串文字可能会被缓存并打开潜在的安全漏洞。

您的担忧仅部分有效。字符串文字实际上是作为 Java 类文件中的文字出现的。用户提供的密码不是字符串;相反,它是一个 String 对象,除非您调用,否则它不会被放置在永久代中String.intern().

现在假设您没有犯下调用的愚蠢行为String.intern(),您对内存中密码的其他担忧应该得到解决。这已经是在 Java 中几乎不可能(由于垃圾收集器执行对象的复制),并且 JSF 生命周期使其不可能(通过要求为输入值构造 String 对象)。以下代码是我编写的,允许托管 bean 通过将字符串转换为 char[] 数组(反之亦然)来将密码存储为字符数组,但如果您已经意识到,它仅用于合规性检查那String对象可能会在内存中停留一段时间:

@FacesConverter("Char[]Converter")
public class CharArrayConverter implements Converter
{

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String newValue)
    {
        if(newValue == null)
        {
            return newValue;
        }
        return newValue.toCharArray();
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value)
    {
        if(value == null)
        {
            return null;
        }
        char[] inputValue;
        try
        {
            inputValue = (char[]) value;
        }
        catch(ClassCastException ccex)
        {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Object was not present in the desired format", null);
            throw new ConverterException(message);
        }
        return new String(inputValue);
    }

}

该转换器在 Facelet 中的用途如下:

...
<p>
    <h:outputLabel for="password" value="#{msg['Signup.password.label']}" />
    <h:inputSecret id="password" value="#{userManager.signupRequest.password}" converter="Char[]Converter" />
</p>
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安全性:有没有办法使用对 char[] 的直接引用而不是字符串? 的相关文章

  • Bower 安装 self_signed_cert_in_chain

    我正在 Windows 中使用 git bash 构建一个角度应用程序 到目前为止 我已经能够使用 yo 搭建脚手架 没有问题 但是当我尝试发出以下命令时 有人可以指出我来解决这个问题吗 Bower 安装 Angular Bootstrap
  • JSF - 实施受限页面过滤器

    我正在关注 BalusC 的回答JSF 2 0 如何获取在浏览器地址栏中输入的 URL https stackoverflow com questions 4105263 jsf 2 0 how to get the url that is
  • Java:BCrypt 的用途很好吗?

    我想知道我当前的 BCrypt 实现是否正确 我知道我没有使用BCrypt checkpw 这可能会导致问题 所以这是我在这里验证的主要原因 Hasher java容器类 abstract public class Hasher publi
  • JSF 2.x @EJB 依赖注入错误

    因此 正如编程中通常发生的那样 我提出了一个问题 而一个潜在的解决方案又引发了更多问题 和错误 我刚开始使用 servlet JSF 和 EJB 并且遇到了依赖注入错误 这是我原来的问题 JSF h 标签不显示 https stackove
  • 验证错误值无效[重复]

    这个问题在这里已经有答案了 我知道这是一个常见的错误 并且有很多关于它的问题 但我必须创建一个新的问题 这是我的 jsf 页面
  • 具有隐式授权的 OAuth 应用程序中的客户端模拟

    来自 OAuth 草案 隐式section https datatracker ietf org doc html draft ietf oauth v2 31 section 1 3 2 在隐式授权流程期间发出访问令牌时 授权服务器不对客
  • jsf中如何处理周围的命名容器?

    我有一个 jsf 2 0 页面 其中包含
  • 从钥匙串保存和加载 |斯威夫特[重复]

    这个问题在这里已经有答案了 如何简单地将字符串存储在钥匙串中并在需要时加载 有几种SO解决方案 主要参考Git repo 但我需要最新 Swift 上最小和最简单的解决方案 当然 我不想添加 git 框架来简单地在我的项目中存储密码 有类似
  • 建立了无需 SSL 即可进行安全注册和身份验证的 javascript 解决方案

    有没有无需 SSL 即可实现安全用户注册和身份验证的解决方案 安全 我的意思是免受被动窃听 不是来自中间人 http en wikipedia org wiki Man in the middle attack 我知道只有带有签名证书的 S
  • jsf文件下载不起作用

    当我点击h commandButton它执行myBean dowanlod 方法 但它不下载任何文件 这是我在支持 bean 中的方法 没有例外 光标变得忙碌 似乎在等待响应 对于这种操作是否有任何额外的配置或者这段代码有什么问题吗
  • 如何更改锁屏自定义文本(所有者信息)?

    我写了程序代码 String message This is test Settings System putString context getContentResolver Settings Secure LOCK PATTERN EN
  • 如何在服务器上保存用户凭据以在后台运行查询

    背景 我们有一个 ASP NET Silveright Web 应用程序 silverlight客户端显示用户 图形形式的特定数据 它从服务器请求数据 问题 由于服务器必须执行底层数据库查询 获取这些数据的成本很高 因此客户端必须等待 优化
  • 允许 iframe 跨域链接到目标父框架

    我有 2 个域 域 1 上的一个页面使用 iframe 加载域 2 中的内容 如何允许来自domain2 iframe 内 的链接在domain1 的完整父框架中打开 我一直在关注IE和w3c的新沙箱属性 http www w3 org T
  • 匿名、身份验证、模拟和委派之间有什么区别,为什么委派需要 Kerberos?

    当我们的客户安装我们的软件时 他们通常选择 拆分安装 其中服务在一个机器上运行 数据库在另一个机器上 这些服务可能与其他服务通信 或者数据库可能包含需要与另一个数据库通信的存储过程 这将我们带入了 Kerberos 和 SetSPN 的黑暗
  • 使用 eval 时不会受到 XSS 威胁

    我正在制作 不是现在 但我仍然对这个感到好奇 一款使用 HTML5 和 JS 的游戏 我想要的是人们可以插入自定义脚本 但要安全 function executeCustomJS code eval code bad 当然这段代码非常糟糕
  • Google App Engine 的 JDO:转义引号

    如何转义 JDO Google App Engine 中的查询参数 例如 如果变量名称可能包含单引号 形式的不安全字符 如何使下一个片段安全 PersistenceManager pm String query select from Pe
  • 内容安全策略:页面设置阻止自行加载资源?

    我有基于 Java 的 Web 应用程序运行在Tomcat http en wikipedia org wiki Apache Tomcat6 我的应用程序在本地主机和端口 9001 上运行 为了使我的应用程序更加安全并降低风险XSS ht
  • 访问 Amazon EC2 上的 Mongodb 时出现问题

    我还有一个问题要问你 我有安装了 mondodb 的 Amazon EC2 实例 它工作得很好 除了一件事 我无法从外部 我的电脑 访问 连接到 它 我认为安全组的问题 这是某种默认防火墙 有谁知道如何配置EC2实例来访问mongodb 提
  • 当机器人攻击时! [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • GSSAPI 中的 javax.naming.AuthenticationException

    我正在尝试使用 JAVA GSSAPI 执行 NTLM 绑定 我收到此错误 javax naming AuthenticationException GSSAPI 根异常是 javax security sasl SaslException

随机推荐

  • Google 地图 v3 从地图外部的链接打开信息窗口

    当用户单击地图外部的链接时 我尝试打开信息窗口 不知道我在这里缺少什么 基本上 我有一个城市列表 每个城市都有一个 id var ids 在 ids 上循环 当用户单击该链接 在 click myclick 1 id 上 如该城市的信息窗口
  • 如何保存所有通过 javascript 添加的内联表单?

    我在保存内联表单时遇到问题 它确实保存默认表单 但每当我添加新的内联表单时 它都不会保存 我缺少什么 谁能告诉我错误吗 谢谢 模型 py class Student models Model name models CharField ma
  • 如何在 Java 中使用 HttpSession 跟踪登录尝试?

    我有一个无框架的网络应用程序 我需要实现一种简单的方法来使用会话检查不成功的登录 如果用户尝试使用不正确的用户名 密码组合登录 3 次 他们将有 20 分钟的超时时间 然后才能再次尝试登录 目前我仅在用户成功登录系统时设置用户会话 但是 似
  • 在 GO 中捕获重复组

    我正在尝试创建一个可以解析由大写单词后跟零个或多个封装在双引号中的参数组成的字符串的函数 例如 以下每一行 COPY filename one filename two REMOVE filename LIST x y z DISCONNE
  • 升级到 Grails 1.3.3 后,Grails 依赖注入不再起作用

    项目设置是Flex 3 BlazeDS Spring Flex Integration Grails 当从我的 Flex 客户端调用服务方法时 我的服务类中的依赖注入在 Grails 1 2 1 中工作得很好 当我昨天使用常规的 grail
  • 使用 jQuery 将表行从一个表复制到另一个表

    当选中该行中的复选框时 我需要能够使用 jQuery 将一行从一个表复制到另一个表 我尝试使用 clone 方法但这有非常奇怪的行为 尽管 jQuery 专门针对第二个表中的行 但当复制到第一个表时 它仍然可以成为目标 所以要么clone
  • 为什么临时借用是合法的?

    来自 C 我很惊讶这段代码在 Rust 中是有效的 let x mut String new x push str Hello 在 C 中 您无法获取临时值的地址 并且临时值的寿命不会比它出现的表达式的寿命长 临时在 Rust 中存在多久
  • 从arm汇编函数返回浮点到objective-c

    我编写了一个汇编函数 它可以在 iPhone 4 32 位代码 和 iPhone 6s 64 位代码 上正常运行 我从 Objective C 中的调用函数传入四个浮点数 这是我用于 4 个浮点数的结构 下面是该函数的原型 正如我的 Obj
  • 如何手动下载/降级 Android 模拟器

    我上周更新了 Android Studio 及其组件 但我一直面临模拟器的麻烦 更新之前一切都很好 现在我只想拿回我的旧模拟器 搜索后我发现了这个答案here 手动下载的链接就像http dl google com android repo
  • 对 epp 模板使用 puppet hash

    我在 erb 模板中有下一个代码 proxy cache path keys zone levels max size inactive 如何将其移植为 epp 模板 我发现这方面的信息很少 请帮忙 您可以按照以下方法执行此操作 显示
  • 使用短代码在任何地方显示 WooCommerce 优惠券输入字段

    我有一个小项目 需要将 Woocommerce 优惠券字段插入任何页面 但这对我来说似乎很复杂 我在谷歌上搜索了这方面的内容 但没有任何关于这方面的资源 找到了有关插入字段的代码 将以下代码插入到文本块中 div class redeem
  • 使用 jquery post 将字典数据传递给控制器​​字符串方法

    我的 Jquery 代码如下 btnExec live click function var data1 lorem ipsum var data2 lorem ipsum var data3 lorem ipsum var dict ne
  • 在 C# 中合并两个 xml 文件,不添加也不删除任何内容(给出的示例)

    假设我有一个如下所示的 xml 文件
  • PHP DOM 和单引号

    有没有办法告诉 DOMDocument 对属性使用单引号而不是双引号 不 DOMDocument 是一个面向数据的 XML 访问 API 它可以按照自己的意愿序列化文档 没有 gt save 标志http www php net manua
  • 在可移动设备/可移动存储上使用FolderBrowserDialog

    我正在开发一个简单的复制工具来从数码相机复制文件 我已经编写了文件复制代码 一切都连接良好 我遇到的问题似乎与FolderBrowserDialog 有关 在Vista中 我还没有检查XP 我可以浏览到相机上的目录 但是 FolderBro
  • 使用 JPA 或数据库内部进行级联删除/更新?

    性能是关键 是在数据库内部级联删除 更新更好还是让 Hibernate JPA 来处理它更好 如果级联位于 DBMS 内部 这会影响查询数据的能力吗 如果这很重要的话 我正在使用 HSQLDB 在级联更新的情况下 如果数据库中有外键约束 则
  • 我可以从 dacpac 生成部署脚本吗

    我有一个 dacpac 文件 该文件由 MSBuild 调用并发布到 QA 数据库以进行测试 此发布失败 我从他们那里得到的错误是一条通用的 发生错误 消息 我希望能够从 dacpac 生成部署脚本并浏览它以查看问题发生的位置 并希望教他们
  • 在 Visual Studio 中启用 SSL - 不提示安装证书

    我正在尝试按照这篇文章中的说明进行操作 http www codeproject com Tips 766918 Visual Studio Use HTTPS SSL On Web Application Pro 系统没有提示我消息 您想
  • JavaScript 日期比较不等于[重复]

    这个问题在这里已经有答案了 我尝试寻找有类似问题的人 但没有找到任何东西 我在 JavaScript 中有两个日期 都设置为相同的值 相等测试在 上失败 但 gt 和 下面是我正在使用的代码 var startDate new Date 2
  • 安全性:有没有办法使用对 char[] 的直接引用而不是字符串?

    前言 这可能是一个巨大的菜鸟错误 我团队中的所有开发人员都对 Java 101 有点模糊 所以如果我们不担心任何事情 请告诉我 具体来说 担心在 permgen 中缓存的字符串文字 我们有一个简单的登录页面 基本上如下所示 支持 Bean