-1

以下の例のように、文字列変数を PHP コードで安全かつ普遍的な方法で使用したいと考えています。私は htmlspecialchars() を見てきましたが、私が必要としているものを得ることができる最高のものだとは思いません。また、mysql 関数は明らかに解決策ではありません (mysql_real_escape_string のようなものは非推奨です)。

次の状況では、何が最善の解決策だと思いますか。

$password = $_POST['password'];
$password_check = $_POST['password_check'];

//make $password and $password_check safe

if($password != $password_check)
{
    $errors[] = 'The two passwords did not match';
}

ありがとう

4

2 に答える 2

1

投稿された 2 つの値を比較する以外に何もしていないため、ここでインジェクションのためにエスケープする必要があるかどうかはわかりません。この時点で文字列がサニタイズされているかどうかは、同等性を比較する上で大きな違いはありません。

もちろん、その値を使用してデータベースに対してクエリを実行する場合は、mysqli_real_escape_string準備されたステートメントを使用してエスケープするか、SQL インジェクションに対して投影する必要があります。

ここで考慮すべきもう 1 つの衛生上の考慮事項は、一致しないパスワードが修正のためにフォームに事前入力される場合です。このシナリオでは、XSS 攻撃に対してサニタイズする必要があります。

于 2012-12-07T16:50:01.360 に答える
0

が非推奨になろうとしている場合mysql_()どうなるでしょうか。PHPには、およびのような他のオプションがmysqli_()ありますPDO

$password = mysqli_real_escape_string($connect, $_POST['password']);
$password_check = mysqli_real_escape_string($connect, $_POST['password_check']);

//make $password and $password_check safe

if($password != $password_check) {
    $errors[] = 'The two passwords did not match';
}

mysqli_() リファレンス

于 2012-12-07T16:44:55.867 に答える