私は何かについて非常に混乱していて、誰かが説明できるかどうか疑問に思っていました.
PHP では、ユーザー入力を検証するので、htmlentitiies、mysql_real_escape_string をデータベースに挿入する前に使用します。明らかに、データがデータベースに入るときに mysql_real_escape_string を使用しますが、データベースからデータを取得して Web ページに表示するときにのみ htmlentities() を使用する必要があるかどうかはわかりません。元の形式を保持していないため、後でそのデータを別の目的で使用する場合に問題が発生する可能性があります。
たとえば、名前、件名、メッセージの 3 つのフィールドを持つゲストブックがあります。明らかに、フィールドには js タグ内の悪意のあるコードのようなものを含むことができます。データベース内の役に立たないデータ。悪意のあるコードを Web ページ (ゲストブック) に出力するときに htmlentities を使用することで、htmlentities はそれを安全な同等のものに変換したため問題ありませんが、同時に、データベースには不要な悪意のあるコードが含まれています。
したがって、これをすべて言った後、私の質問は、データベース内の一部のデータが悪意のある、役に立たないデータである可能性があるという事実を受け入れる必要があり、出力で htmlentities を使用している限り、すべてが問題ないか、それとも何か他のことを行う必要があるかということです。
受信時にデータをフィルタリングし、出力時にエスケープして元のフォームが保持されるようにすることについて多くの本を読みましたが、すでにphpなどに組み込まれている関数を使用してフィールドがintのみであることを保証するなどの例しか示していませんが、見つけたことはありませんユーザーが好きなものを入力できるようにするゲストブックのようなものを確保することに関して何か、また mysql_real_escape_string() とは別にそのようなデータをフィルタリングしてDBクエリを壊さないようにする方法については?
誰かが私のためにこの混乱を最終的に閉じて、私が何をすべきか、そしてベストプラクティスは何ですか?
説明できる人に感謝します。
乾杯!