ユーザーデータをサニタイズするためのみんなのお気に入りの方法は何ですか?
私は Javascript を使用してきましたが、最近はより安全なものが必要になりました (結局、人々はそれをオフにすることができます)。そのため、Flex を検討していましたが、コミュニティの意見を聞いてみようと思いました。
ユーザーデータをサニタイズするためのみんなのお気に入りの方法は何ですか?
私は Javascript を使用してきましたが、最近はより安全なものが必要になりました (結局、人々はそれをオフにすることができます)。そのため、Flex を検討していましたが、コミュニティの意見を聞いてみようと思いました。
検証のためだけにjavascriptやその他のクライアントサイドテクノロジーを使用しないでください。クライアント側の検証を使用してサーバーの負荷を軽減したり、検証が失敗したときにエラーをより早く表示することでアプリの応答性を高めたりできますが、常にサーバー側のコードを使用して検証する必要があります。
個人的には、ASP.Net検証コントロールが気に入っています。これは、ロジックを2回記述することなく、サーバー側のセキュリティを備えたクライアント側の検証の利点を提供するためです。もちろん、ストックコントロールはかなりむき出しですが、拡張することができます。
検証は常にサーバー側で行う必要があります。さらに、クライアント側で実行しても問題ありません。
どのように行うかは、アプリの記述内容によって異なります。どの言語でも検証を処理できる必要があります。言語ではなく、使用されるロジックが重要です。
また、与えられたデータで何をしているのかにも依存します。URL に入れるか、SQL データベースに保存するには、2 つのまったく異なる種類のサニタイズが必要です。可能であれば、有効な値をホワイトリストに登録し、無効な値をブラックリストに登録しないでください。誰かが、あなたが考えもしなかった新しい誤入力を思いつくことができます。
PHPの例:
preg_match('/^[\w][\w\,\-\.]*\@[\w]+[\w\-\.]*$/', $_GET['email'], $matches);
if (count($matches) > 0) {
$_GET['email'] = $matches[0];
} else {
die('invalid email address');
}
プロジェクトの要件に応じて、クライアント側の検証を実装する場合としない場合があります。ただし、サーバー側の検証は常に実装する必要があります。無効なデータをブラックリストに登録するのではなく、適切な入力と値をホワイトリストに登録することを好みます。これにより、私が考慮しなかったものをだれも滑らせることがなくなります。
サーバー側とクライアント側の両方の検証を使用することをお勧めします。クライアント側の検証には JQuery を使用します。