私は関連する登録プロセスの後でしか利用できない曖昧なアプリケーションを構築しているため、悪意のあるデータを頻繁に送信しないでください。フォーム検証は主にJavaScriptのみで行われ、サーバー側のセキュリティ検証のみ
私はCodeigniter 2.1を使用してすべてのPOST変数をフィルタリングします。 Codeigniterは、POSTデータによるSQLインジェクション攻撃を防ぐために、PHP関数mysql_real_escape_string
を使用します。
JavaScriptを使用してすべての検証クライアント側で行います。 JavaScriptの検証はうまくいく。もちろん、ユーザーはcURLや他のユーティリティを使用してクライアント側の検証をバイパスすることができますが、CodeigniterのPHPによる検証によりSQLインジェクションが防止されるはずです。
SQLインジェクション攻撃からデータベースを保護するために、検証クライアントサイドとトラストコードを実行できますか?
SQLインジェクションは心配することの1つにすぎません(あなたはおそらくそれに対して安全です)。 **常にサーバー側の検証**を使用する必要があります.Javascriptの検証は便利な機能です(Javascriptを無効にすることもできますが、セキュリティについて言えば何も価値がありません)。ユーザーはあらゆる種類のデータを送信することができ、フォームを操作することができ、cURLは必要ありません。 – kapa
私は、サーバー側の検証を実装する必要があり、Codeigniterはサーバー側の検証のレベルを実装していることに同意します。質問:Codeigniterは十分な検証を行いますが、検証はまったく必要ありません。 – steampowered
確かに十分ではありません。それはいくつかの種類の攻撃を防ぐことができますが、常に厳格にする必要があります。日付が必要な場合は、日付のみを受け入れます。番号が必要な場合は、番号のみを受け入れます。クライアント側の検証は存在しないと考えるべきです。また、フィルタリングと検証は同じではありません。 – kapa