2017-02-02 7 views
2

通常、私はこのようなコードをフォームに使用しています。その中のPHPコードは、フォームを補充することです。何かが不足している場合:コードを操作することができずに提出した後に詰め替えフォーム

<form action="" method="post"> 
    <input type="text" name="first_name" <?php if (isset($_POST['first_name'])) { echo "value=\"".$_POST['first_name']."\"";} ?>><br> 
    <input type="text" name="last_name" <?php if (isset($_POST['last_name'])) { echo "value=\"".$_POST['last_name']."\"";} ?>><br> 
    <input type="submit" name="submit"> 
</form> 

セキュリティツールは、ハッカーがコードを入力するとハッカーが私のコードを操作できると教えてくれました。 "><p>Hello!!!</p>と入力して送信してください。ハッカーがPHPコードまたはHTMLだけを操作することはできますか?

これは大きな問題ではないですか?

これを防ぐにはどうすればよいですか? >"のような特別な文字を削除するだけで十分ですか?または、より良い、よりエレガントな方法がありますか?

答えて

1

はい、これは深刻な問題です。これはXSS攻撃です。攻撃者はこの方法で悪質なスクリプトを挿入することができます。 https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

この種の攻撃を回避するには、HTMLタグをエスケープする必要があります。以下はPHPライブラリです:http://php.net/manual/en/function.htmlspecialchars.php

+0

ありがとう。この質問の答えを待っている間、私はこの考えを持っていました: ' '、' '、' \ ''、 '/' – user7128548

+0

私はPHPの専門家ではありませんが、この方法でタグを削除しようとしていると思います。悪い考えではありません。あなたのシナリオに合っていますが、もしあなたが何かを見逃してしまった場合に備えて、ライブラリを使う方が良い解決法かもしれません(例えば、図書館はあなたのコードでカバーされていない '&'記号もカバーします)。 – jackgu1988