0

CI バージョン 1.7.2 で書かれたサイトがあります。

タスクは、インジェクション攻撃とクロス サイト スクリプティングを防ぐことです。

それに関連するあらゆる種類の情報をほとんど読みました。私は試した

-htmlentities

-mysql_real_escape_string

-CI xss_clean

-pregmatch, escape, htmlspecialchars

-CI escape

-strip_tags

-magic_quotes

検索ボックスにアラート コードまたは writeResponse を入力すると、サイトと DB からのあらゆる種類の結果が表示されます (一部は Chrome では機能しませんが、アラートとその他すべては Firefox と IE で機能します)。

これに対処するための最良の方法を提案してください。

ありがとうございました

4

3 に答える 3

1

下記URL参照

Code Ignitor xss_clean() と Zend PDO を組み合わせた PHP での SQL インジェクションと XSS 保護

あなたの場合、CodeIgniter によってすでに 2 つの安全機能が提供されています。

  1. ユーザー入力の XSS フィルタリング:入力クラスには、そのメソッドの 2 番目のブール値パラメーターがあり、グローバル xss フィルターがオンになっていない場合に、XSS フィルターを介して入力を実行できます。

  2. SQL インジェクションの場合、バインドされたクエリとアクティブ レコードを使用することは安全です。フレームワークが脆弱なユーザー入力をエスケープするすべての作業を行うため、SQL インジェクションから保護されます。ユーザーによって報告された Active レコードの脆弱性はほとんどありませんが、CodeIgnitor チーム (EllisLabs) によるその後のリリースで迅速に修正されます。

もう一つの例

codeigniter での SQL インジェクションの防止

http://codeigniter.com/forums/viewthread/124587/#616863

http://codeigniter.com/forums/viewthread/186543/#881859

于 2012-09-27T19:16:26.610 に答える
1

聞いたことがない場合に備えて。PDOは、PHP および SQL で使用するのに適したテクノロジの 1 つです。ドキュメントは、次のような PDO の「準備済みステートメント」を使用している場合、SQL インジェクションはほぼ不可能であると主張しています。

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// insert one row
$name = 'one';
$value = 1;
$stmt->execute();

// insert another row with different values
$name = 'two';
$value = 2;
$stmt->execute();
?>

このコード例は以下からの引用です: http://php.net/manual/en/pdo.prepared-statements.php そのリンクから、2 番目の箇条書きを読んでください。

抽象化として機能するという追加の利点があり、システムをデータベース間で互換性があります。コードも見栄えが良くなりました。

ドキュメントを調べて、探しているものが正確に提供されているかどうかを確認してください。

于 2012-09-27T19:08:47.273 に答える
-1

この質問は殴り殺されました。レビュー: OWASP XSSOWASP SQL インジェクション

于 2012-09-27T19:04:39.893 に答える