これまでに尋ねられたことがお詫び申し上げますが、この場合、あまりにも過小ではなく、そこに情報の過負荷があると感じています。私が見ているところには矛盾する意見があるようです。 説明があれば幸いです。XSSを防ぐために、HTML形式でユーザー入力をhtmlspecialchars()する必要がありますか?
私はユーザー登録フォームを持っています。私はさまざまなフィールドを検証しましたが、私はhereを読んで出力(ユーザープロファイルなど)を残すことをお勧めしていますので、データ(例:htmlspecialchars)にサニタイズ機能を使用していません。私はデータを挿入するためにPDO準備文を使用していますので、私が知る限り安全です。
しかし、私のドメインをさまざまな脆弱性スキャナーで実行していると、登録フォームが非常に危険であり、XSS攻撃の犠牲になる可能性があると報告しました。修正後に再提出するように、彼らは、別のフィールドにエラーが発生している
<input type="text" placeholder="Username" name="user" maxlength="32" value="<?php echo test_input($user); ?>" pattern="^[a-zA-Z0-9]*$" required>
私は場合には、フォームに戻って、そのユーザーの入力をエコー-INGの午前:私は次のようにこれが原因となったコードのスニペットを考えています。したがって、潜在的に有害なスクリプトがページにエコーされる可能性があります。
ただし、確かにこれは特定のユーザーからの入力だけですか?彼らが引き起こす可能性のある唯一の害は自分自身です。スキャナが間違っているのですか、または私はほとんどそのリスクに気づいていませんか?
一般的な文字列、電子メールアドレス、URLのフィールドがあります。私のサイトへの訪問者の安全を確保するために、どのような措置を取る必要がありますか?
ご協力いただきありがとうございます。私に教えてください。
EDIT
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data, ENT_QUOTES | ENT_HTML5, 'UTF-8');
return $data;
}
'test_input()'は何をしますか? –
申し訳ありませんが、危険なスクリプトが実行されないようにするために追加した機能です。元の投稿に追加します。基本的に私の質問は、この段階で必要かどうか、またはユーザーが入力した内容を正確に返すだけなのかどうかです。それを指摘してくれてありがとう。 – user2228716
[大脱走(または:テキスト内でテキストを扱うために知る必要があるもの)] – deceze