Очистить строку пароля PHP - PullRequest
3 голосов
/ 12 июня 2009

У меня есть страница PHP, которая позволяет людям запускать htpasswd для обновления своего пароля. Каков наилучший способ дезинфицировать их вклад. Я не хочу сильно ограничивать ввод, потому что хочу разрешить безопасные пароли. Это то, что у меня есть. Как это можно улучшить?

$newPasswd = preg_replace('/[^a-z0-9~!()_+=[]{}<>.\\\/?:@#$%^&*]/is', '', $inputPasswd);
$cmdline = $htpasswd . " " . $passwd_file . " " . escapeshellarg($username) . " " .escapeshellarg($newpasswd);
exec( $cmdline, $output, $return_var );

Ответы [ 2 ]

8 голосов
/ 12 июня 2009

Функция ecscapeshellarg встроена в PHP и отличается в разных системах на основе оболочки для очистки текста, чтобы в exec не передавались «небезопасные» символы.

http://us2.php.net/manual/en/function.escapeshellarg.php

1 голос
/ 12 июня 2009

Я бы не стал использовать preg_replace с пустой строкой для «опасных символов», так как это заставит пользователя поверить, что он изменил пароль на что-то, но вы исполняете что-то еще .. Таким образом, пользователь установит пароль на что-то другое, чем он вставьте ... Было бы лучше дать отзыв пользователю, сообщив ему, что некоторые символы (желательно, чтобы захватывать и отображать оскорбительные символы) не проходили проверку.

Кроме этого, я думаю, что это выглядит довольно хорошо. Я думаю, что он предоставляет пользователю широкий спектр возможных символов, и ему не нужно больше, чем те, которые создают безопасный пароль. Также может быть полезно сообщить пользователю, какие символы разрешены в пароле, чтобы ему не приходилось угадывать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...