如何在Joomla 2.5中使查询sql Injection安全


How to make a query sql Injection safe in Joomla 2.5

请问如何使此查询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];

只是作为@Sudhir答案的延伸。

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

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

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