データベースとの通信に Propel フレームワークを使用しています。PDO を使用していbindParam()
て、入力しようとすると , を作成することがわかったので、SQL インジェクションをカバーする必要があります。
strip_tags()
しかし、それは、htmlspecialchars()
または同様のものなどの追加のセキュリティを提供しますか、それとも手動で行う必要がありますか?
PDOは使ったことがあるので基本は知っていますが、Propelを使うのは初めてです。
ORM が XSS 攻撃から保護するとは思えません。これは、データベース層とは関係のない問題です (HTML を保存したい場合に問題が発生する可能性があります)。
Propel が提供する唯一の「セキュリティ」は、あなたが言及したパラメータ バインディングです。誰かがhtmlタグや特殊文字などを保存したい場合、それを超えると問題が発生する可能性があります. たとえば、setXxxx()
クラスのメソッドをオーバーライドできます。
class Book extends BaseBase {
...
public static function setTitle($v) {
return parent::setTitle(strip_tags($v));
}
...
}
上記のようなことを行うstrip_tags()
と、Book
タイトルが設定されているときはいつでも実行できます。Propel はどこでも setter メソッドを使用するので、うまくいくはずです。もちろん、あなたのコードは実際にそのセッターをあらゆる場所で使用して、それが確実に行われるようにする必要があります。