2010-12-05 16 views
0

私はコメントシステムの作成を試しています。私はphp-OEmbedクラスとHTML Purifierクラスを使用しています。コメントをデータベースに確実に挿入するために、どのようなフィルタを使用できますか?私はあなたがFILTER_SANITIZE_STRINGなどのPHPフィルタを使用できることは知っていますが、これらはエンティティにHTMLを回しませんか?コメントの安全性を確保する

また、WMD editorのようなものを使用する場合は、クライアント側でも同様に(PHP Markdownなど)何かを使用して安全であることを確認する必要がありますか?

答えて

2

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

データベースに入れるときは、SQL特殊文字を引用してSQLインジェクションを防止する必要があります(プリペアドステートメントがこれを行います)。ブラウザに送るときには、スクリプトの挿入を防ぐためにHTMLの特殊文字をエスケープする必要があります(PHPはこれを行う関数を持っています)。

特殊文字をエスケープする必要がある他の場所もあります。たとえば、サーバー上のBashスクリプトにコメントを送信して何らかの処理を行うとします。その場合、Bash固有の特殊文字を引用するかエスケープする必要があります。

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

1

SQLインジェクションにフィルタを使用する必要はありません。好ましい解決策は、prepared statementsを使用することです。たとえば、PDOはPDOStatementです。

+0

私は追加することを忘れています、私はPDO上に構築されている赤い豆を使用しています。 – jonnnnnnnnnie

関連する問題