正确传输和保护 Web 应用程序的用户密码

2023-12-23

我正在为我的硕士项目开发一个网络应用程序。这是一个供教授管理学生项目的系统,它使用Java作为服务器端代码,使用HSQLDB作为数据库,使用JSP作为表示层,并且运行在tomcat上。将存储的数据不包括任何敏感信息(学生 ID、财务信息等),但用户名和密码是必需的,因此我想在学生使用密码进行访问时保护密码本身他们将我的应用程序用于其他一些更重要的应用程序(即使我告诉人们不要这样做,这无疑会发生)。

我以前从未研究过这类事情,我很迷失。我确实找到了一篇很好的文章,解释了如何使用 Java创建密码的哈希值 http://www.devbistro.com/articles/Java/Password-Encryption,我在中找到了信息tomcat文档 http://tomcat.apache.org/tomcat-7.0-doc/config/realm.html解释如何设置领域中使用的哈希方案以及如何做带有 Tomcat 的 SSL http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html, 以及ASAJavaScript 库 http://code.google.com/p/crypto-js/#SHA-2从密码创建哈希,但我不确定如何将所有部分放在一起,以及我到底需要哪些部分。

如果我使用 JavaScript 库对密码进行哈希处理并使用 SSL 进行登录步骤(此后我认为这是不必要的,因为其他数据不需要保护),然后仅在数据库中存储密码的哈希版本,是否足够?或者我需要做更多的事情吗?我跑过一个问题 https://crypto.stackexchange.com/questions/760/webapp-password-storage-salting-a-hash-vs-multiple-hashes答案讨论了 PBKDF2 和其他一些事情,但这让我更加困惑......如果我应该使用这些答案中提到的方案之一,我该如何去做呢?我没有在 tomcat 或其他文档中看到对它们的引用,所以我不知道如何使用它们......

如果有人可以消除我的困惑并告诉我安全传输和存储密码的正确方法是什么,我将非常感激。


SSL 负责保护整个传输层。您无需担心通过 HTTPS 发送的数据。

切勿将真实密码存储在数据库中。仅存储使用适当安全(即非 MD5)散列函数生成的加盐散列。为每个哈希使用不同的盐。

如果遵循这些原则,无论您使用什么组件,您都将拥有合理的用户名/密码存储机制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正确传输和保护 Web 应用程序的用户密码 的相关文章

随机推荐

  • 服务器到服务器 > 检索远程 zip 文件并将其解压到本地服务器目录

    我在服务器 B 上有一个 wp 插件文件 其目的是从远程服务器 A 检索 zip 文件 服务器 B 收到 zip 文件后 应提取内容并将文件复制到服务器 B 上的特定文件夹中 覆盖任何现有文件 我从下面的文件中借用了一些代码 该文件使用上传
  • 使用 Android NDK 编译原生 C++ 共享对象

    我已经生成了一个 so在 Linus 上通过 C 文件并得到 so现在生成文件我已经交叉编译了这个 so归档Android ARM所以我必须通过编译它Android NDK这样新生成的 so可以在我的android项目中使用 那么任何人都可
  • TRY_PARSE 与 TRY_CONVERT

    我目前正在学习我的 MCSA 数据平台 我错误地回答了以下问题 我正在寻找解释为什么我的答案是错误的 因为测试中的解释没有多大意义 您有一个名为 AuditTrail 的表 用于跟踪对其他表中数据的修改 AuditTrail 表由许多进程更
  • 我可以在java中使用方法链接的抽象构建器类而不执行不安全操作吗?

    我试图为某些构建器类提供一个抽象基类 以便我可以轻松地在构建器实现之间重用代码 我希望我的构建器支持方法链接 因此方法必须返回最具体类型的 this 实例 我想我可以用泛型来做到这一点 不幸的是 我无法在不使用不安全操作的情况下做到这一点
  • 生成器不是迭代器吗?

    我有一个生成器 一个产生东西的函数 但是当试图将它传递给gensim Word2Vec我收到以下错误 类型错误 您不能将生成器作为句子参数传递 尝试迭代器 生成器不是迭代器的一种吗 如果没有 我如何从中创建一个迭代器 查看库代码 它似乎只是
  • 范围为“class”的 Pytest 装置不适用于“setup_class”方法

    我目前正在使用pytest addoption运行我的 API 测试 因此测试应该针对用户在命令行上使用的环境运行 在我的测试文件中 我试图实例化UsersSupport只上一次课 就通过了env争论 我的代码 测试 py import p
  • NSMutableData 的 mutableBytes 和 bytes 方法之间的区别

    两者都返回相同的指针 我知道 bytes属于NSData 为什么NSMutableData介绍 mutableBytes 是否只是为了代码清晰 以便更明显地访问可变数据 使用哪一个真的很重要吗 NSMutableData mydata NS
  • 使用ExternalProject_Add将Opus包含在Android中

    这可能很简单 我有一个使用 NDK 的 Android 项目 我想包括opus https opus codec org downloads 本机代码中的源代码 我尝试使用 CMake 的ExternalProject Add 属性 但我的
  • ASP.Net WebForms 路由 多个目的地的单一路由

    我正在考虑为我计划创建的新网站设置数据库路由 我一直在查看以下有关使用数据库中的FriendlyUrls 的教程 http www asp net web forms tutorials aspnet 45 getting started
  • 在 C 扩展中释放全局 VM 锁而不使用其他函数

    我不明白为什么在 Ruby C API 中释放或获取 GVL 时需要另一个间接级别 Both rb thread call without gvl and rb thread call with gvl 需要一个只接受一个参数的函数 但情况
  • DataTable 内的 Markdown 正在其周围添加段落

    当 DashTable 中使用 markdown 时 需要额外增加一个 p 添加标签使单元格和实习生所有行变大 import dash from dash import dash table app dash Dash app layout
  • 在三星上,Compose AlertDialog 始终采用全宽

    在我的配备 One UI 5 0 和 Android 13 的三星 Galaxy S22 上 撰写 AlertDialog 始终占据全宽 在其他设备上它的工作方式与预期一致 Compose版本是1 3 1 您只需下载即可重现此内容 我怀疑这
  • 为什么我的 WPF 应用程序禁用了拖放功能(即使当 AllowDrop 为 true 时)?

    我的 WPF 应用程序禁止从 Windows 资源管理器中删除文件 并显示停止标志光标 我尝试在主窗口和包含的控件上将AllowDrop属性 UIElement祖先的属性 设置为true 但完全没有运气 没有触发拖放事件 有什么想法或建议来
  • 区分具有未知功能的产品 - sympy

    我尝试了各种搜索 但找不到一个好的谷歌字符串来得出正确的结果 我有以下形式的产品 y x f x 其中 f 是 x 的未知函数 我希望 sympy 对 y 相对于 x 进行微分 有谁知道我该怎么做 怎么样 gt gt gt x sympy
  • jQuery .trigger('click') 在间隔函数内?

    这是一个改写的问题here https stackoverflow com questions 5031019 stuck on weird jquery error 经过一些测试后 我隔离了问题 但没有解决它的线索 无需阅读上一个问题 这
  • 为什么线程过程应该是静态的或成员函数

    为什么线程过程应该是静态的或成员函数 有什么正当理由吗 非静态成员变量有一个隐式的this编译器内部传递的参数 You have ClassInQuestion void threadFunc int 并且编译器内部创建了一个函数 void
  • DataTable.Merge 和 DataTable.ImportRow 不会更改 RowState

    我在 ADO NET 2 0 合并 导入数据时遇到问题 我需要将数据从一个通用表更新 插入到另一个表 并且两个表都保持相同的架构 以下代码在本地运行良好 但不会对数据库进行更改 OleDbDataAdapter localDA loadLo
  • mailgun 传入邮件事件获取附件 url

    我有一个节点端点 它接收 json 格式的传入电子邮件 其中包含来自 mailgun 的所有附件 附件位于 json 数组中 xxx com 用于隐私 attachments url https sw api mailgun net v3
  • 导航架构组件 - 将参数数据传递到 startDestination

    我有一个活动 A 启动活动 B 并向其传递一些意图数据 活动 B 托管来自新导航架构组件的导航图 我想将该意图数据作为参数传递给 startDestination 片段 如何做到这一点 好的 感谢 Google 团队的 Ian Lake 我
  • 正确传输和保护 Web 应用程序的用户密码

    我正在为我的硕士项目开发一个网络应用程序 这是一个供教授管理学生项目的系统 它使用Java作为服务器端代码 使用HSQLDB作为数据库 使用JSP作为表示层 并且运行在tomcat上 将存储的数据不包括任何敏感信息 学生 ID 财务信息等