如何才能使这个查询sql注入安全? 请问JRequest :: getVar是否确保传递的参数是sql injection safe?
$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];
答案 0 :(得分:3)
正如@Sudhir回答的延伸。
自从Joomla以来, JRequest
已被折旧! 1.7正在逐步删除,例如Potential backward compatibility issues in Joomla 3.0。如果您打算保留自己的组件,可能需要将旧式JRequest
电话迁移到JInput。
答案 1 :(得分:2)
是的,使用 getVar 函数来访问请求变量,将确保所有用户数据在其他地方(例如在SQL查询中)使用之前被过滤。 JRequest类上的 getVar 方法会自动过滤输入(除非另有明确说明)。
您还可以在插入数据库之前使用quote来转义字符串