filter_var
はデータのフィルタリングに適していますか?どのような種類の不良データがフィルタリングされますか?私はmysql_real_escape_string
を使用しますが、filter_var
を追加すると役に立ちますか?filter_varは良い方法ですか?
答えて
可能であれば、準備されたステートメントを使用して防御してください。そうでない場合は、文字列にはmysql_real_escape_string、整数の場合は(int)、整数の場合はint(int)、浮動小数点数の場合はfloat(float)、LIKE文で使用する文字列の場合はaddcslashes($ input、 '%_')を使用します。 RLIKE文の中で使用される文字列をエスケープしようとすると、さらに複雑になります。
$escaped = htmlspecialchars($input, ENT_QUOTES, $your_charset);
A:それは、その場合には、最も手頃な価格のソリューションである、欲しい
は、フィルタリングHTMLコンテンツでは、最高のは、($ allowable_tagsを介さずに)strip_tagsだろう、しかし...あなたは/好きではないことより信頼性の高いソリューションは、次のようなライブラリを使用することです。HTML Purifier
フィルタ関数はOKですが、フィルタのバリデータはフィルタよりも多くあります。あなたのニーズに応じて、それらのいくつかが役に立つかもしれません。
htmlspecialchars()は、テキストをHTMLに出力するための適切な処理です。正当な '<'文字をテキストに使用する場合、strip_tags()はコンテンツを失い、適切に '&'を表示しません。 – bobince
本当にあなたがしようとしていることに依存しています。具体的なことを知らずには本当に答えられません。考えられるフィルターとその効果は、次のとおりです。Types of filters
基本的に、ユーザーの入力から生じるxssまたはmysqlの攻撃をフィルタリングして検証します。 – mikelbring
XSSとSQLインジェクションの方法が多すぎます(http://ha.ckers.org/xss.html)。すべてがアプリケーションによってユーザーデータの処理方法に依存します。 – Gumbo
filter_var
をFILTER_*
constantsと組み合わせて調整します。 validation(データのチェックは安全です)ではなく、sanitisationのデータ(実際には安全にするためにデータを調整する*)を探しているようです。
さまざまなフィルタは、さまざまなタスクに役立ちます。 mysql_real_escape_string
はSQLインジェクションを防ぐためにデータをサニタイズしても問題ありませんが、HTMLを含む可能性のあるデータを出力するのは良くありません。 - 、(削除しない)HTMLコードを表示するXSS攻撃を阻止し、HTMLエンティティにシンボルを変換するのに有用な
FILTER_SANITIZE_SPECIAL_CHARS
:ここで私は日常的なタスクのために使用したいフィルタののカップルです。FILTER_SANITIZE_STRING
とSTRIP_LOW/HIGH
フラグ - 実際にはHTMLを削除します(strip_tags
参照)。FILTER_SANITIZE_URL
- URLを安全にする*。FILTER_SANITIZE_EMAIL
- 電子メールアドレスを安全にすることができますが、アドレスを保存する前に検証の同僚を使用することをお勧めします。
私が緩く安全な使用*、私はあなたがあまりにも確認することはできません意見です。
ちょっと小さなテストに基づいて、filter_var
の定数は信頼できないという結論に至りました。例えば
:
filter_var('[email protected]', FILTER_VALIDATE_EMAIL); // valid
filter_var('http://.', FILTER_VALIDATE_URL); // valid
filter_var('[email protected]', FILTER_SANITIZE_EMAIL); // [email protected]
filter_var('http://.', FILTER_SANITIZE_URL); // http://.
は、これらは明らかに無効な値ですが、filter_var
の定数を渡します。 filter_var
を信用しないでください。
サニタイズは、検証と同じではありません。 –
@Mathew、あなたは正しいと思いますが、私が指摘した 'filter_var'の問題とは何が関係しているのか分かりません。それは、私が提供した入力を正確にフィルタリングしたり、適切にサニタイズしたりすることはありません。 – eyelidlessness
http://tools.ietf.org/html/rfc822で見ることができる限り、電子メールアドレスは正しく定式化されています。特に、 'c'は新しいTLDとして登録され、' b- 'はそのドメイン(' --'は有効な文字です)に登録されます。そこに問題はないと思う。 '!def!xyz%abc + tag @ [127.0.0.1]'は有効なアドレスではありませんか? (私は思っていません - それは不思議ではありません) ドメイン名の例はすばやく表示されませんでしたが、 'dig。'は妥当な応答を示し、 'stackoverflow.com.' 'stackoverflow.com'と同じipを返します(最初のurlの末尾のドット)。私はこの中で 'filter_var'とPHPに同意します。 – Iiridayn
すべては、有効なURLまたは有効なメールの意味によります。
たとえば、[email protected]
- よく、トップレベルドメインをフィルタリングして.c
を除外できますが、トップレベルドメインのリストは定数ではありません。さらに、すべての文字が有効です。これは奇妙に見えますが、ほぼ確実に有効ではありませんが、多くの正規表現フィルタもそれを検証します。
メールで[email protected]
またはURL http://.
を表示またはリンクで使用すると、どこにもいなくても害はありません。
私は問題の一部があなたのフィルタをどの程度緩めているのかという疑問だと思います。大きな懸念がXSSまたはSQLインジェクションである場合、または危険な入力を防止する場合、値が有用であるかどうかは関係ありませんので、この種のフィルタがトリックを行う可能性があります。
値が安全であるだけでなく使用可能であることを確認したい場合は、それはより厄介な獣です。
- 1. にfilter_varが、私は私の異なるサーバ上の異なる方法にfilter_var作品だと思い
- 2. Zend_db_tableは良い方法ですか?
- 3. wwwサブドメインは良い方法ですか?
- 4. PHPでhtmlentitiesでfilter_varを使用するとよいですか?
- 5. filter_var using FILTER_VALIDATE_REGEXP
- 6. Zend_Validate_EmailAddressとfilter_var(...、FILTER_VALIDATE_EMAIL)
- 7. より良い方法ですか? jquery
- 8. Selenium PageFactoryInit - 良い方法。新しいページを返す良い方法は何ですか?
- 9. Mid()用法とforループ - これは良い方法ですか?
- 10. 良い方法
- 11. 良い方法
- 12. 良い方法
- 13. PHPでクラスをオートロードするのは良い方法ですか?
- 14. Postgresでトランザクションをロールバックする良い方法は何ですか
- 15. "良い" SecureRandomを作成する最良の方法は何ですか?
- 16. PHPのfilter_var、これは現代的な解決策ですか?
- 17. std :: systemまたはexecはより良い方法ですか?
- 18. レールアプリケーションでカテゴリを扱う良い方法は何ですか?
- 19. ループ内で `fwrite`を使うのは良い方法ですか?
- 20. これはC++でポインタを使う良い方法ですか?
- 21. プロジェクトで最も良いバージョン管理方法は何ですか
- 22. Clearcaseで最も良い方法は?
- 23. urlencodeでもphp - filter_varがfalseを返す
- 24. 例外をスローするのは良い方法ですか?
- 25. Reduxストアに設定するのは良い方法ですか?
- 26. コレクションをロックする最も良い方法は何ですか?
- 27. テストプロパティを単位にするのは良い方法ですか?
- 28. モデルを判断する良い方法はnullですか?
- 29. これはメモリを解放する良い方法ですか?
- 30. 親指を生成する良い方法は何ですか?
なぜこれが下降したのかわからない – Ross
XSSとSQLインジェクションが何であるか、そしてなぜそれらを防ぐためにミラクル機能を要求するのではなく、なぜ可能かを理解してください。 – Gumbo
何を手伝ってくれますか?あなたはfilter_varが達成することを望んでいることを何をしようとしていますか? – jmucchiello