nginx auth_basic登录验证遇到的坑

nginx auth_basic登录验证遇到的坑

htpasswd默认使用crypt()加密,创建的密码只有前8位有效

问题 #

htpasswd -c /etc/nginx/.htpasswd  test

假如,密码为abcd12345

那么在登录的时候,不管是输入“abcd1234”、”abcd12345“或”abcd123456789sdjkal“ 都能通过验证。

解析 #

因为htpasswd默认使用crypt()加密,而crypt()加密只有前面8位有效。

解决方法 #

htpasswd -m -c /etc/nginx/.htpasswd  test

在创建账号的时候指定”-m“参数,使用MD5加密就能解决这个问题了。