我正在使用 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
复制分号后的所有内容,并确保没有换行符。 (需要的话用记事本清理一下) 这是您的新哈希密码。
关于apache - 如何防止在 Tomcat 7.0.52 中使用散列密码登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47731474/