htpasswdを実行してパスワードを更新できるPHPページがあります。彼らの入力を害する最善の方法は何ですか?私は安全なパスワードを許可したいので、入力を多く制限したくありません。これは私が持っているものです。どのように改善することができますか?PHPパスワード文字列のサニタイズ
何か他のことは、ユーザは、彼が何かにパスワードを変更したと信じて行いますので、私は、「危険な文字」に空の文字列とにpreg_replaceを使用することはありませんが、あなたは、EXEC$newPasswd = preg_replace('/[^a-z0-9~!()_+=[]{}<>.\\\/?:@#$%^&*]/is', '', $inputPasswd);
$cmdline = $htpasswd . " " . $passwd_file . " " . escapeshellarg($username) . " " .escapeshellarg($newpasswd);
exec($cmdline, $output, $return_var);
escapeshellargを使用すると、悪い文字を削除する必要はありませんか? – JonDrnek
Escapeshellargは、シェルによって解釈される可能性のあるものを削除します。 (または、例えば '=> \'のように変更してください)私はhtpasswdに精通していませんが、シェルインジェクション攻撃を防ぐことができます。 – MiffTheFox