Codeigniters 検証ライブラリを使用することは、セキュリティを強化するための最初のステップです。これを使用して、無効な文字 (HTML、潜在的な XSS/SQL 攻撃など) を削除する必要があります。
あなたの要件に従って:
strip_tags
- HTML タグを削除します
xss_clean
- 潜在的な xss 攻撃文字列を削除します
SQL インジェクション攻撃を防ぐためalpha_numeric
に、検証ルールのようなものを使用して、英数字のみを許可することで潜在的に危険な文字から保護することもできます。
SQL インジェクションを防ぐもう 1 つの方法は、データベースとの間でデータをやり取りするときに Codeigniters アクティブ レコード ライブラリを使用することです。意図したとおりに Codeigniters アクティブ レコードを使用すると、SQL インジェクション攻撃に使用される可能性のある危険な文字が自動的に削除されます。
方法 1 (無効な文字を削除する) - アクティブなレコード ライブラリの WHERE 関数パラメーターを利用する
$query = $this->db->where('username', $username);
$query = $this->db->get('users');
方法 2 (保護なし) - where ステートメントを直接記述する
$this->db->where('username = '.$username);
$query = $this->db->get('users');
方法 3 (保護なし) - SQL ステートメント全体をクエリ関数に直接書き込む
$this->db->query('SELECT * FROM users WHERE username = '.$username);
アクティブなレコード ライブラリを使用しない場合、codeigniter は文字列をエスケープする (データベースに安全に入力できるようにする) 関数を提供します。
$this->db->escape() この関数は、文字列データのみをエスケープできるようにデータ型を決定します。また、データの前後に一重引用符が自動的に追加されるため、次のことを行う必要はありません。
使用例:
$this->db->query('SELECT * FROM users WHERE username = '.$this->db->escape($username));
参照: http://codeigniter.com/user_guide/database/queries.html