安全性:有没有办法使用对 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[] 的直接引用而不是字符串? 的相关文章

  • 64 位上的 ASLR 和内存布局:是否仅限于规范部分 (128 TiB)?

    当加载启用 ASLR 的 PIE 可执行文件时 Linux 是否会限制程序段到规范部分 最多 0000 7fff ffff ffff 的映射 还是会使用完整的较低部分 起始位 0 显然 Linux 不会给你的进程提供不可用的地址 这会导致它
  • asp.net 中的 HTML 标签注入

    我的安全团队报告了以下代码的一个 html 标签注入安全问题 function ClosePopUp objBhID var pageName window location pathname var modalPopupBehavior
  • viewExpiredException JSF [重复]

    这个问题在这里已经有答案了 为了处理 JSF 中的 viewExpiredException 我编写了代码
  • 将默认消息“验证错误:需要值”更改为“需要值”

    我可以修改这个默认值吗required true 验证消息仅显示 需要值 formId inputId 验证错误 值是必需的 Either使用输入组件的requiredMessage属性
  • 我首次设置 AWS EB 时创建的默认安全组是什么?

    我对几个组所扮演的角色感到困惑 这些组似乎已自动添加到我的 AWS 安全组列表中 并以我收集的默认配置进行连接 并且想知道它们是如何工作的 以及它们的安全性如何 改变 具体来说 有三个神秘之处 launch wizard 1其中有一条入站规
  • JSF 和库的不明确性

    在花了一些时间使用 servlet 和 JSP 之后 现在我正在尝试了解一些有关 JSF 的知识 我已经学习了基础知识 做了几个简单的例子 对 工作流程 有了基本的了解 但我仍然无法理解 javax faces webapp FacesSe
  • 是否可以执行扩展名为 file.php.jpg 的 PHP?

    网站合法文件image upload php用于上传文件89471928047 php jpg这是简单的文件上传表单 将 tmp 文件复制到同一图像文件夹 他们如何设法执行它并通过它上传其他文件 有人知道这怎么可能吗 PHP version
  • 如何安全地存储和处理 JWT 密钥

    读完这篇文章后 JWT 什么是好的密钥 以及如何将其存储在 Node js Express 应用程序中 https stackoverflow com questions 30089604 jwt whats a good secret k
  • JSF中直接更改URL来限制用户访问页面

    我的应用程序中有两种用户 客户和卖家 我正在使用一个PhaseListener在JSF中防止用户在未登录的情况下访问页面 但在登录后我不知道如何防止用户更改地址栏中的URL并访问他也不允许的页面 例如 阻止客户访问卖家页面 有谁知道我如何防
  • ui:define with generated="false" 属性仍然呈现

  • 如何在@FacesConverter中注入@EJB、@PersistenceContext、@Inject、@Autowired等?

    我怎样才能注入像这样的依赖项 EJB PersistenceContext Inject AutoWired等在一个 FacesConverter 在我的具体情况下 我需要通过注入 EJB EJB FacesConverter public
  • 如何向 JSF 应用程序发送手动 jQuery Ajax 请求?

    我正在做一个POST 使用 jQuery 的请求似乎成功了 但是我如何在服务器端使用它并修改响应 我是否需要另一个 servlet 因为 Faces Servlet 不是为处理这个问题而设计的 ajax type POST data sta
  • 如何将值传递到 selectOneMenu 中的监听器

    我有 2 个下拉菜单 类型和代码 如果值 A 或 B 或 C 我希望代码下拉列表根据类型下拉列表更改值 如何将 A 或 B 或 C 的值传递给侦听器 以便它可以理解和处理我的 List
  • 正确使用 EncryptedSharedPreferences

    Android 最近发布了 EncryptedSharedPreferences 它自动加密 SharedPreferences 键 值数据 虽然这很好 但我发现我可以简单地连接 API 调用并检索解密的值 除了在调用 EncryptedS
  • SSLContext 初始化

    我正在看JSSE参考指南 我需要获取一个实例SSLContext为了创建一个SSLEngine 所以我可以使用它Netty以启用安全性 获取实例SSLContext I use SSLContext getInstance 我看到该方法被重
  • 从支持 bean 更新 PrimeFaces 数据表

    我在 bean 中使用 Schedule Timer 当员工注册从指纹设备获取数据时 它会更新变量 当 bean 中的变量更新时 我需要从支持 bean 更新 jsf 中的组件 我尝试使用 primefaces poll 组件 但它每次都会
  • Primefaces 中动态生成条形图

    我正在使用 Primefaces 4 0 我需要根据查询结果的数量生成条形图 条形图的标题和颜色也应该能够为所有使用查询结果的人动态设置 条形图示例如下
  • JavaScript 访问密码字段值是否被视为存在安全风险?

    如果安全 正确地存储密码是良好的风格和安全性 那么对于要求用户输入密码的网页来说不应该也是如此吗 考虑这个例子
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • JSF1064 jsf 2.0 上的“无法找到或提供资源”警告

    我正在 Weblogic 10 3 3 上使用 Java EE 5 和 JSF 2 0 Mojarra 2 0 3 开发一个企业项目 我没有错误 但在浏览我的应用程序时 控制台中出现了非常烦人的警告 每当我在 JSF 中执行重定向时 我都会

随机推荐

  • 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