2012-08-17 74 views
2

如何使此查询SQL注入安全请? JRequest :: getVar会确保传递的参数是sql注入安全吗?如何进行查询sql注入安全在Joomla 2.5

$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]; 

回答

2

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

您还可以使用quote插入到数据库

+0

谢谢你的回答,这是肯定的吗?因为当我四处张望时,有人告诉我,我应该使用类似JDatabase :: quote的东西来确保这一点.. – themis 2012-08-17 04:35:38

+1

是的,你可以使用它,以便字符串在插入到数据库之前被转义 – 2012-08-17 04:39:55

+0

好的,然后谢谢 – themis 2012-08-17 04:41:18

3

正如@苏德赫的答案的扩展之前转义字符串。

JRequest自从Joomla!已经贬值! 1.7,并逐渐被删除,例如Potential backward compatibility issues in Joomla 3.0。如果您打算保留您的组件,则可能需要将旧式JRequest调用迁移到JInput

+0

好吧我刚刚检查它也兼容2.5谢谢你 – themis 2012-08-17 05:33:19