CFWheels ORM 和 SQL 注入
CFWheels ORM and SQL Injection
我是 Coldfusion 的新手,我以前的背景是 PHP 使用 codeIgniter。我目前正在为一个项目使用 CFWheels。
我有一个插入语句
n_building = model("buildings").new();
n_building.name = name;
n_building.save();
并阅读声明
room = model("rooms").findOne(where="name='#name#' AND b_id='#b_id#'");
是上面的最佳实践还是能从安全的角度写的更好
问题是使用 ORM 会自动保护我的查询免受 SQL 注入或任何其他形式的注入或安全风险吗?我是否必须使用其他东西,如果是的话,我该如何修改上述语句?
据我所知,cfwheels ORM 将参数化由 ORM 构建的查询。
它将在语句中插入 <cfqueryparam>
。
但是您可以启用调试并轻松查看发送到数据库的查询。
CfWheels 默认情况下对所有内容都使用 cfqueryparam,除非您使用参数 parameterize 并将其设置为 false。所以你不必担心 Sql 注入。
阅读 findAll method description 中的参数化参数。
按照 John Whish 的建议,使用动态查找器可以使您的代码变得更好。
我是 Coldfusion 的新手,我以前的背景是 PHP 使用 codeIgniter。我目前正在为一个项目使用 CFWheels。
我有一个插入语句
n_building = model("buildings").new();
n_building.name = name;
n_building.save();
并阅读声明
room = model("rooms").findOne(where="name='#name#' AND b_id='#b_id#'");
是上面的最佳实践还是能从安全的角度写的更好
问题是使用 ORM 会自动保护我的查询免受 SQL 注入或任何其他形式的注入或安全风险吗?我是否必须使用其他东西,如果是的话,我该如何修改上述语句?
据我所知,cfwheels ORM 将参数化由 ORM 构建的查询。
它将在语句中插入 <cfqueryparam>
。
但是您可以启用调试并轻松查看发送到数据库的查询。
CfWheels 默认情况下对所有内容都使用 cfqueryparam,除非您使用参数 parameterize 并将其设置为 false。所以你不必担心 Sql 注入。
阅读 findAll method description 中的参数化参数。
按照 John Whish 的建议,使用动态查找器可以使您的代码变得更好。