Joomla,自己组件中的正确转义
Joomla, the correct escaping in their own component
我已经为 Joomla 编写了自定义组件。此 RSS 提要可从不同来源读取,应存储在 SQL 数据库中。
但是如何正确使用转义函数呢?这是我的代码:
// Create a new query object.
$query = $db->getQuery(true);
// Insert columns.
$columns = array('id',
'id_feedsource',
'title',
'link',
'pubDate',
'timePubDate',
'guid',
'description',
'creator',
'content' ,
'read',
'smart',
'demografie',
'urbanisierung',
'arbeitswelten',
'konnektivitaet',
'nano',
'femaleshift',
'energie',
'bildung',
'individualisierung',
'public',
'cache');
// Insert values.
$values = array('NULL',
$db->quote($db->escape($value['source'])),
$db->quote($db->escape($value['title'])),
$db->quote($db->escape($value['link'])),
$db->quote($db->escape($value['pubDate'])),
$db->quote($value['timePubDate']),
$db->quote($db->escape($value['guid'])),
$db->quote($db->escape($value['description'])),
$db->quote($db->escape($value['creator'])),
$db->quote($db->escape($value['content'])),
0,0,0,0,0,0,0,0,0,0,0,0,0);
// Prepare the insert query.
$query
->insert($db->quoteName('#__heka_rss_feeds'))
->columns($db->quoteName($columns))
->values(implode(',', $values));
// Set the query object and execute it.
$db->setQuery($query);
//echo $query->dump().'<br>';
$db->execute();
现在添加个人贡献“\”。例如:
NASA 的费米 Space Telescope 提高了它的 high-energy 视野
发布时看起来不太好。由于转义 SQL 注入将被使用,但它可能还不正确。
我做错了什么?
我相信 $db->quote 也转义了这些值。因此,您将按照自己的方式进行双重逃脱。尝试
$values = array('NULL',
$db->quote($value['source']),
$db->quote($value['title']),
$db->quote($value['link']),
...
...哪个应该更好用。请参阅文档 here
我已经为 Joomla 编写了自定义组件。此 RSS 提要可从不同来源读取,应存储在 SQL 数据库中。
但是如何正确使用转义函数呢?这是我的代码:
// Create a new query object.
$query = $db->getQuery(true);
// Insert columns.
$columns = array('id',
'id_feedsource',
'title',
'link',
'pubDate',
'timePubDate',
'guid',
'description',
'creator',
'content' ,
'read',
'smart',
'demografie',
'urbanisierung',
'arbeitswelten',
'konnektivitaet',
'nano',
'femaleshift',
'energie',
'bildung',
'individualisierung',
'public',
'cache');
// Insert values.
$values = array('NULL',
$db->quote($db->escape($value['source'])),
$db->quote($db->escape($value['title'])),
$db->quote($db->escape($value['link'])),
$db->quote($db->escape($value['pubDate'])),
$db->quote($value['timePubDate']),
$db->quote($db->escape($value['guid'])),
$db->quote($db->escape($value['description'])),
$db->quote($db->escape($value['creator'])),
$db->quote($db->escape($value['content'])),
0,0,0,0,0,0,0,0,0,0,0,0,0);
// Prepare the insert query.
$query
->insert($db->quoteName('#__heka_rss_feeds'))
->columns($db->quoteName($columns))
->values(implode(',', $values));
// Set the query object and execute it.
$db->setQuery($query);
//echo $query->dump().'<br>';
$db->execute();
现在添加个人贡献“\”。例如: NASA 的费米 Space Telescope 提高了它的 high-energy 视野
发布时看起来不太好。由于转义 SQL 注入将被使用,但它可能还不正确。 我做错了什么?
我相信 $db->quote 也转义了这些值。因此,您将按照自己的方式进行双重逃脱。尝试
$values = array('NULL',
$db->quote($value['source']),
$db->quote($value['title']),
$db->quote($value['link']),
...
...哪个应该更好用。请参阅文档 here