我想知道JRequest :: getVar()函数是否足以阻止sql注入或XSS,或者必须更好地使用其他一些东西来防止在joomla站点中进行XSS或sql注入。
答案 0 :(得分:7)
假设您正在为Joomla 2.5+开发,那么您不应再使用JRequest
,因为它已被弃用。
获取请求变量的新方法如下:
$jinput = JFactory::getApplication()->input;
// expecting integer, default 0
$user_id = $jinput->post->get('user_id', 0, 'INT');
// expecting string, default empty string
$user_name = $jinput->post->get('user_name', '', 'STRING')
$jinput
的第三个参数是过滤器,因此,如果您知道自己需要,例如要返回的整数,设置适当的过滤器。
请注意,要使用JInput
,必须关闭magic quotes
。
要防止sql注入,请使用
$db = JFactory::getDbo();
// $value is not safe
$value = $db->quote($value);
反对XSS
$filter = JFilterInput::getInstance();
// $value is not safe
$value = $filter->clean($value);
阅读完评论后,我只想补充说,本身没有“坏人物”。此外,针对sql注入或xss的过滤是非常不同的。为了更好地理解过滤和转义,请访问The Great Escapism