【发布时间】:2016-01-10 09:01:22
【问题描述】:
我在我的论坛上使用此代码“检查重复的 ip”:
<?php
$db = JFactory::getDBO();
$pid = $forum['Post']['topic_id'];
$ipaddress = $forum['User']['ipaddress'];
$query = 'SELECT count(ipaddress) FROM #__forum_comments WHERE ipaddress = "' . $ipaddress . '" AND pid = ' . (int) $pid;
$count_ip = $db->setQuery($query)->loadResult();
if($count_ip >= 2){
echo 'Your ip repeated';
}
?>
我向编写此代码的开发人员询问了有关 SQL 注入保护的问题,他们是这样说的:
原生 Joomla 方法是
JFactory::getDBO(),这是正确的方法。您可以尝试使用转义方法来查看是否有效:$ipaddress = $db->escape($forum['User']['ipaddress']);无需转义$pid,因为将其转换为整数就足够了。事实上,由于这两个值都直接来自数据库,因此可以很安全地假设即使没有转义,这里也不会有任何类型的 mysql 注入。
我需要这样做吗?
//escaping to prevent sql injection
$pid = mysqli_real_escape_string($mysqli, $review['Review']['listing_id']);
$ipaddress = mysqli_real_escape_string($mysqli, $review['User']['ipaddress']);
【问题讨论】:
标签: php mysql mysqli joomla sql-injection