我正在做一个网上商店,我对产品的描述有一点问题。
我想用户设置自己的描述与一些基本的html元素,如<b>
, <iframe>
, <body>
, <style>
等
那么我现在如何保护该描述从sql注入或恶意javascript和php代码?
我尝试了myqsl_real_escape_string()
,但我认为这是不够的
您可以使用BB-Codes
来描述。
:
<?php
$description = 'hello, [b]b Tag[/b] for test';
$description = htmlspecialchars($description, ENT_QUOTES, "UTF-8");
$description = preg_replace(''[b](.*?)'['/b]','<b>$1</b>',$description);
echo $description;
?>
输出:hello, b标签用于文本
防止恶意HTML可能最好留给像HTMLPurifier这样的东西,你可以列出你准备接受来自用户的标签。
没有真正安全的方式来接受来自用户的JavaScript,不幸的是,因为有太多的方法来屏蔽内容,即使在沙盒环境中运行它也不一定告诉你它是否安全,所以完全剥离<script>
标记可能是最安全的。
我建议使用PDO来运行参数化的SQL查询,这可以保护您免受SQL注入。
您还可以使用这些技术来防止sql注入。
- 使用
mysql_real_escape_string();
- 使用预处理语句
- 使用PDO准备语句
你可以在这里找到更多的信息:
http://packetcode.com/article/preventing-sql-injection-php-security