我想知道JRequest::getVar()函数是否足以防止sql注入或XSS,或者必须更好地使用其他一些东西来防止XSS或sql注入在joomla站点。
假设您正在为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
的第三个参数是filter,所以如果你知道你想要返回整数,设置合适的过滤器。
注意使用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