Jomquest :: getVar('Variable')在joomla中是否安全?

Oh *_*oob 1 joomla joomla1.5 joomla1.6 joomla2.5

我想知道JRequest :: getVar()函数是否足以阻止sql注入或XSS,或者必须更好地使用其他一些东西来防止在joomla站点中进行XSS或sql注入.

Mar*_*o D 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')
Run Code Online (Sandbox Code Playgroud)

第三个参数$jinput是过滤器,因此如果您知道要返回整数,请设置适当的过滤器.

请注意,对于使用JInput,magic quotes必须关闭.

为了防止sql注入,请使用

$db = JFactory::getDbo();
// $value is not safe
$value = $db->quote($value);
Run Code Online (Sandbox Code Playgroud)

并针对XSS

$filter = JFilterInput::getInstance();
// $value is not safe
$value = $filter->clean($value);
Run Code Online (Sandbox Code Playgroud)

阅读完你的评论后,我只想补充说,本身没有"坏人物".此外,针对sql注入或xss的过滤是非常不同的.为了更好地理解过滤和逃避,请遵守伟大的逃避现实

  • 但请注意,2.5中的整个Joomla Core使用JRequest,因为JInput在任何仍然打开魔术引号的网站上失败!(在PHP 5.3中已弃用,在5.4中已删除,我知道 - 但仍然有太多网站打开此功能!) (2认同)