apache - 如何防止在 Tomcat 7.0.52 中使用散列密码登录?

标签 apache tomcat hash cryptography webserver

我正在使用 Tomcat 7.0.52 服务器并在 tomcat-users.xml 中使用散列密码。

我的服务器接受同时使用纯文本密码和散列密码的登录。

如何防止/阻止用户使用散列密码登录并强制他们使用明文密码?

以下文件的片段

网络.xml:

<login-config>
<auth-method>DIGEST</auth-method>
<realm-name>testvalue</realm-name>
</login-config>

服务器.xml

<Realm className="org.apache.catalina.realm.MemoryRealm" digest="SHA"/>

tomcat-用户.xml

<user username="testuser" password="xxxx--------------yyyy" roles="testrole"/>

最佳答案

我知道这并不是您所问问题的严格答案,但我建议至少将 tomcat 升级到最新版本 8.0(发布时为 8.0.48)。我从 7 升级到 8 已经有一段时间了,但如果没记错的话,那是非常轻松的。 This link应该包含您需要了解的有关向上迁移的所有信息。您真正需要注意的唯一一件事是它需要 Java 7 或更高版本,即使这也不是什么大问题,除非您有一个特别特殊的设置。

Tomcat 8.0.x 说明如下

这就是我的设置方式,我无法通过将散列密码粘贴到密码字段来登录。我选择了 sha-512 并任意选择了 512 作为我的盐长度。您不必但为什么不呢?

Tomcat 8 - 服务器.xml

<Realm className="org.apache.catalina.realm.LockOutRealm">
    <!-- Tomcat comment stuff trimmed out here -->
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase">
        <CredentialHandler className="org.apache.catalina.realm.MessageDigestCredentialHandler" algorithm="sha-512" saltLength="512" />
    </Realm>
</Realm>

Tomcat 8 - tomcat-users.xml:

<role rolename="yourrolehere"/>
<user username="yourusername" password="yourhashedpasswordhere" roles="yourrolehere"/>

我确定您已经知道如何使用 digest.bat(或者 digest.sh,如果您喜欢的话)但是对于其他人来说,打开命令提示符并导航到您的 tomcat 安装并进入 bin 目录。然后输入以下内容:

digest -a sha-512 -s 512 youRcl3artextpa$sword

这将产生一个非常长的密码散列,其格式为:

youRcl3artextpa$sword:hashedpasswordforalongtime

复制分号后的所有内容,并确保没有换行符。 (需要的话用记事本清理一下) 这是您的新哈希密码。

Tomcat 8 Digested Passwords Documentation

关于apache - 如何防止在 Tomcat 7.0.52 中使用散列密码登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47731474/

相关文章:

php - 如何启用 gzip?

java - 我可以使用 IntelliJ IDEA 将多个 WAR 存档文件部署到本地 Tomcat 吗?

java - Cron Job 每天午夜运行

javascript - 单页应用程序中的后退按钮处理?

c - 具有特定要求的纯C通用双向哈希表

ruby-on-rails - Foursquare 位置哈希存储作为 Rails 模型属性/列

apache - 未知目录的重写规则

php - 子页面上的 Angular 2 apache .htaccess 文件 404

apache - Tomcat 上的内容协商

tomcat - 如何将日志从 tomcat docker 容器发送到 catalina.out?