当前位置: 首页 > 知识库问答 >
问题:

安全地对密码进行URL编码

屈昊天
2023-03-14

Java为URL编码字符串提供了Urlencoder类。但是将密码存储为字符串被认为是不安全的。通过HttpSurlConnection输出流WR通过POST发送密码的代码是否足够安全?

try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) {
    // Write some post params
    for (char c : pass) {
        wr.writeBytes(URLEncoder.encode(String.valueOf(c), "UTF-8"));
    }
    // Write some more
}

一方面,它在使用字符串。另一方面,这些字符串只有1个字符长,编码后在概念上是相同的。而且,在我看来,这可能会在多字节字符上失败。攻击者是否能够在内存中找到这些1-char字符串并重建原始密码?有没有更好的办法做到这一点?

共有1个答案

冯卜鹰
2023-03-14

确实,当使用字符串作为密码时,您不能可靠地丢弃它们,因为您无法手动清零字符串内容(除非通过反射),并且内容将在内存中停留一段未知的时间。因此,通常建议将char[]用于任何密码输入,然后手动归零所述char[]

然而,攻击并不容易发起,因为它需要访问内存,幸运的是时机。密码不太可能在内存中停留很长时间,因为GC执行它的工作,内存得到重用。在大多数情况下,与其他更简单的攻击相比,此攻击向量可能是不可行的。

 类似资料:
  • 不执行该作业。 我试着用: 我真的不知道如何处理这件事。 更新: 然后我将它从DB中提取为$data。

  • 我试图通过参数在谷歌搜索,它的工作,当我搜索一个词,但一个我做空间它坏了我知道有一种方法来编码网址。 回溯: 还有一次,我用希伯来文写道: UnicodeEncodeError:“ascii”编解码器无法对位置14-18中的字符进行编码:序号不在范围内(128)

  • 问题内容: 我将NodeJS与Express一起使用,当我在URL中使用外来字符时,它们会自动进行编码。 如何将其解码回原始字符串? 在调用NodeJS之前,我先转义字符。 所以字符串: 成为 现在,整个URL如下所示: 现在在我的NodeJS中,我得到了转义的字符串。 这是相关代码: 我已经尝试过和图书馆,但似乎没有适合我的情况。 问题答案: 更新16/03/18 并且已弃用。 用: 旧答案 给

  • 我想为我的网站创建一个编码的网址。例如,对于这个URL:"http://google.com/index.html" 我想通过URL编码将此URL提供给客户端。

  • 本文向大家介绍Android 使用密码以安全方式对数据进行AES加密,包括了Android 使用密码以安全方式对数据进行AES加密的使用技巧和注意事项,需要的朋友参考一下 示例 以下示例使用AES加密给定的数据块。加密密钥以安全的方式派生(随机盐,1000轮SHA-256)。加密使用具有随机IV的CBC模式下的AES。 请注意,存储在类数据EncryptedData(salt,iv,和encryp

  • 本文向大家介绍IOS中对Url进行编码和解码示例,包括了IOS中对Url进行编码和解码示例的使用技巧和注意事项,需要的朋友参考一下 本文主要介绍IOS中对Url进行编码和解码示例,具体如下: 1.非ARC模式下 2. ARC模式下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。