2

我使用 Propel 框架与数据库进行通信。bindParam()当我尝试输入时,我认为它正在使用 PDO 并制作 a ,因此应该涵盖 SQL 注入。

但它是否提供额外的安全性,例如strip_tags(),htmlspecialchars()或类似的东西,还是我应该手动执行此操作?

我以前使用过 PDO,所以我知道基础知识,但这是我第一次使用 Propel。

4

2 回答 2

3

我不希望 ORM 能够防止 XSS 攻击。这是一个与数据库层无关的问题(如果您想存储 HTML,则会导致问题)。

于 2013-01-21T10:13:28.763 回答
2

Propel 提供的唯一“安全性”是您提到的参数绑定。如果有人确实想要存储 html 标签、特殊字符等,除此之外的任何事情都可能导致问题。也就是说,如果需要,您可以扩展 Propel 为您执行此操作。例如,您可以覆盖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 回答