基本的に、ユーザー入力をどこかに送信するときは常に、ユーザー入力をサニタイズする必要があります。
それをデータベースに入れるときは、SQLの特殊文字を引用してSQLインジェクションを防ぐ必要があります(プリペアドステートメントがこれを行います)。これをブラウザに送信するときは、スクリプトの挿入を防ぐために、HTMLの特殊文字(PHPにはこれを行うための関数があります)をエスケープする必要があります。
他にも、特殊文字をエスケープする必要がある場所があるかもしれません。たとえば、サーバー上のBashスクリプトにコメントを送信して、ある種の処理を行う場合です。その場合、Bash固有の特殊文字を引用符またはエスケープする必要があります。
間違った段階で引用/エスケープしないことが重要です。たとえば、データベースに配置するときにHTMLエンティティをエスケープしないでください。ただし、自分が何をしているかを完全に確信している場合を除きます。データベースから取り出してブラウザに送信する準備をするときに、誤って再度エスケープするのは非常に簡単です。データベース接続に失敗した場合にエラーメッセージを送信する場合は、まったくエスケープしないでください(これによりXSSの脆弱性が発生する可能性があります) )。最後の瞬間にあなたの脱出をしてください、そしてあなたはおそらくこれらの落とし穴を避けるでしょう。