https://www.owasp.org/index.php/PHP_Top_5#How_to_Determine_if_you_are_Vulnerable_2リンクのタイトル P2: クロスサイト スクリプティング > How to Protect Against It; 項目 4 と 5 には、次のように書かれています。
- 項目 4:フリー テキスト入力は、HTML エンティティを使用した後にのみユーザーに安全に再表示できます
- 項目 5: URL 経由でユーザーに送り返される変数は、urlencode() を使用して URL エンコードする必要がありますが、GET 要求の使用は、ナビゲーション以外の目的では推奨されません。
私の質問
Q1
項目4については、それができると明示的に言われていますが、htmlspecialchars()
それで十分で効率的であると読んだことを覚えていますhtmlentities()
。( の優位性に関するソース リンクの例。Pornel_htmlspecialchars
のコメントを読んでください: PHP サイトで xss 攻撃を回避するためのベスト プラクティスは何ですか) したがって、この OWASP の入力の後で混乱します。my を、MySQL ユーザー入力データを html として画面に出力するときに使用するものに置き換える必要が あります。htmlspecialchars()
htmlentities()
Q2
私のフォーム (記事の追加、コメントの追加、管理者への電子メール) では、Post - Redirect - Session Variables
フローを利用しています。GET
(私の説明はばかげているかもしれませんが、フローの 3 番目のステップでは を使用しないことを意味します。代わりにGET
、変数を使用します。)それでも、変数のどこかでSession
使用する必要がありますか? (注: あなたが「はい」だとしても、どうすればよいかわかりません。それは私が勉強する別のトピックです。当面は「はい」または「いいえ」だけを学びたいのですが、なぜこの質問の答えが自分のもちろんHOW部分も定義していただけると大変助かります)よろしくお願い
しますurlencode()
Session