私はフォームのなりすましについて読んでいますが、渡された値が適切に検証されていることを確認できるのに、なぜそれを防ぐことがそれほど重要なのか理解できませんでしたか?おそらく私はここで何かが欠けていますが、ここに例があります:
example.org/form.html:
<form method="post" action="post.php">
<input type="text" name="content" value="something">
<input type="submit" name="post" value="Post">
</form>
example.org/post.php:
if (isset($_POST['content']))
{
$content = filter_var($_POST['content'], FILTER_SANITIZE_STRING);
//use $content as a sanitized variable, pass it to a database, etc.
}
悪意のあるユーザーは、form.htmlの入力フィールドをたとえばに変更するだけですが、<textarea name="content">something here</textarea>
それは何かにどのように影響しますか?とにかく、post.phpスクリプトの文字列からタグが削除されていることを確認します。
だからここに私の質問があります:適切な入力検証があれば、PHPフォームのなりすましはセキュリティの観点からほとんどまたはまったく危険ではないと仮定するのは安全ですか?悪意のあるユーザーがname="content"
、データベースなどを効果的に無効にする可能性のある属性(textarea、select、およびその他すべてのタグを除く)を使用してスクリプトに渡すことができるものは他にありますか?他に何もできないのなら、なぜトークンを使うのですか?