誰かが私が間違っていることを教えてもらえますか? PHP フィルターを使用して、フォームのユーザー入力をサニタイズして検証しようとしています。この入力は mySql データベースに送られ、次に html ページ出力に送られるため、すべての html タグを削除し、mySQL のセキュリティも提供する必要があります。
ありがとう。
/*
* BEGIN Sanitize and validate
*/
// Adding fields to sanitize array.
$filters = array(
'author' => FILTER_SANITIZE_SPECIAL_CHARS,
'title' => FILTER_SANITIZE_SPECIAL_CHARS,
'description' => FILTER_SANITIZE_SPECIAL_CHARS,
);
/*** apply the filters to the POST array ***/
$filtered = filter_input_array(INPUT_POST, $filters);
// filtering out anything that isn't an email address
$sanitized_email = filter_var(($_POST["email"]), FILTER_SANITIZE_EMAIL);
if ( filter_var($sanitized_email, FILTER_VALIDATE_EMAIL) == TRUE) {
echo '';
} else {
echo 'Invalid Email Address. Go Back.';
exit;
}
/*
* BEGIN sanitize and validate
*/
新しいコードですが、まだ機能していません。私は何か間違ったことをしています。データベースでまだhtmlを取得しており、エラーが機能していません。
/*
* BEGIN Sanitize and validate
*/
// Adding fields to sanitize array.
$filters = array(
'author' => FILTER_SANITIZE_STRING,
'title' => FILTER_SANITIZE_STRING,
'description' => FILTER_SANITIZE_STRING,
);
/*** apply the filters to the POST array ***/
$filtered = filter_input_array(INPUT_POST, $filters);
$filters = array_map('mysql_real_escape_string',$filters);
$filters = array_map('htmlspecialchars',$filters);
if ( filter_var_array($filtered, FILTER_SANITIZE_STRING)) {
echo '';
} else {
echo 'Invalid Input. Go Back.';
exit;
}
// filtering out anything that isn't an email address
$sanitized_email = filter_var(($_POST['email']), FILTER_SANITIZE_EMAIL);
if ( filter_var($sanitized_email, FILTER_VALIDATE_EMAIL)) {
echo '';
} else {
echo 'Invalid Email Address. Go Back.';
exit;
}
/*
* BEGIN sanitize and validate
*/
2番目以下に編集:
データベースにデータを取得するスクリプトの領域にサニタイズ コードを追加することで、サニタイズされたデータをデータベースに表示します。
$_POST['author'] = mysql_real_escape_string(trim($_POST['author']));
$author=filter_var($_POST['author'], FILTER_SANITIZE_STRING);
$_POST['email'] = mysql_real_escape_string(trim($_POST['email']));
$email=filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
ここで、メールの検証を完了する必要があります。