質問

コメントシステムの作成を実験しています。私は使用しています php-oenbed クラスと HTML浄化器. 。コメントをデータベースに安全に挿入できるようにするために、どのフィルターを使用できますか? Filter_Sanitize_StringなどのPHPフィルターを使用できることは知っていますが、これらはHTMLをエンティティに変えませんか?

また、ようなものを使用する場合 WMDエディター, 、その後、クライアント側でも何かを使用する必要がありますか( PHPマークダウン)それが安全であることを確認するために?

役に立ちましたか?

解決

基本的に、ユーザー入力をどこかに送信するたびにサニタイズする必要があります。

データベースに入れた場合、SQL特殊文字を引用してSQLインジェクションを防ぐ必要があります(準備されたステートメントはこれを行います)。ブラウザに送信する場合、スクリプトの注入を防ぐために、HTML特殊文字(PHPにはこれを行う機能があります)をエスケープする必要があります。

特別なキャラクターを逃れる必要がある他の場所もあるかもしれません。たとえば、何らかの処理を行うためにサーバー上のbashスクリプトにコメントを送信する場合。その場合、バッシュ固有の特殊文字を引用または逃れる必要があります。

間違った段階で引用/脱出しないことが重要です。たとえば、あなたが何をしているのかを完全に確信していない限り、データベースに入れたときにHTMLエンティティを逃がさないでください。データベースから引き出してブラウザに送信する準備をしているときに、誤って物事を再びエスケープするのは非常に簡単です。または、データベース接続が失敗した場合にエラーメッセージを送信している場合は、物事をエスケープしないことです(XSSの脆弱性が発生する可能性があります)。最後の瞬間に逃げると、おそらくこれらの落とし穴を避けるでしょう。

他のヒント

SQLインジェクションにフィルターを使用する必要はありません。好ましいソリューションは使用することです 準備されたステートメント. 。たとえば、PDOは提供します pdostatement.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top