[Comm] проблема с squid_auth_ldap

crux =?iso-8859-1?q?crux_=CE=C1_syktsu=2Eru?=
Пн Мар 1 21:21:06 MSK 2004


Добрый вечер, community.
Настраиваю авторизацию пользователей на прокси сервере squid в 
ldap-каталоге. Столкнулся с проблемой в хелпере squid_auth_ldap.
Суть в том, что по всей видимости ни сам squid ни squid_auth_ldap никак 
не эскейпят строку, содержащую имя пользователя.
Вот пример squid.conf:

auth_param basic program /usr/libexec/squid_ldap_auth -b 
ou=Users,dc=home,dc=ru  -f (&(uid=%s)(accountStatus=active)) -P -h localhost
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

acl password proxy_auth REQUIRED
http_access allow password
http_access deny all

В первой строке указывается в качестве фильтра для поиска в LDAP 
выражение (&(uid=%s)(accountStatus=active)), где вместо %s в 
squid_auth_ldap подставляется имя пользователя. И это имя никак не 
эскейпится!
Например, такие два пользователя будут абсолютно идентичны (т.е. смогут 
авторизоваться на прокси):
vasya
vasya)(objectClass=*
Если подставить оба эти имени в строку поиска, то фильтр будет 
совершенно корректный, поэтому авторизация прокатывает.
Теоретически такие символы как "(",")","&" и т.д. должны вырезаться из 
строки, подставляемые в строку фильтра, т.к. они являются 
зарезервированными.
Чем это грозит? Ну например, я пытаюсь сделать ограничение по трафику 
скачиваемого юзерами через прокси. Определение скачанного трафика 
основывается на имени пользователя в логах squid. Если пользователь 
сможет вот так каверкать своё имя, он может легко превысить свой лимит, 
используя такие псевдологины.

Соотвественно извечный вопрос: что делать?

Версия squid 2.5STABLE4 (собрано из сырцов), ALM2.2.

--
crux




Подробная информация о списке рассылки community