Security PHP:htmlspecialchars&real转义字符串"e
我现在正在PHP5中编程,使用PDO,不使用准备好的语句,而是使用普通查询,如下所示:Security PHP:htmlspecialchars&real转义字符串"e,security,pdo,mysql-real-escape-string,quote,htmlspecialchars,Security,Pdo,Mysql Real Escape String,Quote,Htmlspecialchars,我现在正在PHP5中编程,使用PDO,不使用准备好的语句,而是使用普通查询,如下所示: $oQuery = $oDatabase->query( "SELECT Content FROM CMS WHERE Title = '". $this->TITLE ."' LIMIT 1" ); $aItem = $oQuery->fetch(); echo stripslashes($aItem['Content']); 现在我有两个问题
$oQuery = $oDatabase->query(
"SELECT
Content
FROM
CMS
WHERE
Title = '". $this->TITLE ."'
LIMIT 1"
);
$aItem = $oQuery->fetch();
echo stripslashes($aItem['Content']);
现在我有两个问题:
如果我想插入一些东西,这对SQL注入是否足够保护
$something = quote($something);
这对于HTML和SQL注入来说足够了吗
$something = htmlspecialchars($something, ENT_QUOTES);
请看ENT_引号,因为这也将替换此:'
这个怎么样
$this->TITLE = mysql_real_escape_string($this->TITLE);
$oQuery = $oDatabase->query(
"SELECT
Content
FROM
CMS
WHERE
Title = '". $this->TITLE ."'
LIMIT 1"
);
$aItem = $oQuery->fetch();
echo stripslashes($aItem['Content']);
还是我应该继续使用事先准备好的声明
谢谢 否,HTML和SQL根据上下文具有不同的特殊字符。因此,他们需要一种不同的、上下文敏感的处理方法
即使是使用或和引用的HTML属性值(乍一看可能类似),也有不同的特殊字符集和不同的转义序列。特别是,.我认为你误解了一些事情 HTML注入: htmlspecialchars将特殊字符转换为HTML实体 就是这样,它只对在网页上显示数据有用,这样就不会有人试图注入html。例如:
echo '<p> Welcome: ' . htmlspecialchars($_GET['username']) . '</p>';
例如,仅当没有参数时才使用查询
$oDatabase->query("SELECT Content FROM CMS");
否则,请随时准备避免sql注入
$oDatabase->query("SELECT Content FROM CMS");