2

データベースとの通信に Propel フレームワークを使用しています。PDO を使用していbindParam()て、入力しようとすると , を作成することがわかったので、SQL インジェクションをカバーする必要があります。

strip_tags()しかし、それは、htmlspecialchars()または同様のものなどの追加のセキュリティを提供しますか、それとも手動で行う必要がありますか?

PDOは使ったことがあるので基本は知っていますが、Propelを使うのは初めてです。

4

2 に答える 2

3

ORM が XSS 攻撃から保護するとは思えません。これは、データベース層とは関係のない問題です (HTML を保存したい場合に問題が発生する可能性があります)。

于 2013-01-21T10:13:28.763 に答える
2

Propel が提供する唯一の「セキュリティ」は、あなたが言及したパラメータ バインディングです。誰かがhtmlタグや特殊文字などを保存したい場合、それを超えると問題が発生する可能性があります. たとえば、setXxxx()クラスのメソッドをオーバーライドできます。

class Book extends BaseBase {
  ...
  public static function setTitle($v) {
    return parent::setTitle(strip_tags($v));
  }
  ...
}

上記のようなことを行うstrip_tags()と、Bookタイトルが設定されているときはいつでも実行できます。Propel はどこでも setter メソッドを使用するので、うまくいくはずです。もちろん、あなたのコードは実際にそのセッターをあらゆる場所で使用して、それが確実に行われるようにする必要があります。

于 2013-01-21T16:08:15.200 に答える