2

请问如何使这个查询sql注入安全?JRequest::getVar 会确保传递的参数是 sql 注入安全的吗?

$product_id = JRequest::getVar('product_id')
$db = JFactory::getDBO();
$query = " select * from #__products where product_id=".$product_id."; ";       
$db->setQuery($query);
$data = $db->loadObjectList();
return $data[0];
4

2 回答 2

3

就像@Sudhir 回答的延伸一样。

JRequest自 Joomla! 以来一直在贬值!1.7 并且正在逐步删除,例如Joomla 3.0 中潜在的向后兼容性问题。如果您打算保留您的组件,您可能希望将旧样式JRequest调用迁移到JInput

于 2012-08-17T05:24:44.813 回答
2

是的,使用getVar函数访问请求变量,将确保在将所有用户数据用于其他地方(例如在 SQL 查询中)之前对其进行过滤。 JRequest类上的 getVar 方法会自动过滤掉输入(除非另有明确说明)。

您还可以在插入数据库之前使用引号来转义字符串

于 2012-08-17T04:20:29.720 回答