我正在为我的网站启动评论系统。问题是我想使用HTML编辑器,但并不是完全必要的。
我的问题在于安全性。如何保护我保存在数据库中的用户输入?因为我在我的网站上显示输入,我想阻止XSS,SQL注入和其他类似的事情。但我仍然希望我的用户能够写任何字符。
例如,daniweb使用和HTML EDITOR(wysiwyg。
我也试过
function bstring( $value )
{
$value = htmlentities( $value, ENT_QUOTES );
$value = strip_tags( $value );
$value = mysql_real_escape_string( $value );
return (string)$value;
}
答案 0 :(得分:0)
答案 1 :(得分:0)
如果您想允许用户输入HTML标签但不允许他使用某些标签(如脚本),您应该只为标签实施某种形式的白名单。
$allowed_tags = "<b><i><br>"; // Some safe examples
$value = strip_tags( $value, $allowed_tags );
总是知道何时以及为何使用哪种过滤器:
答案 2 :(得分:0)
htmlentities不提供安全性
你需要使用replace剥离html 在列表中列出您要禁止的标签以及您要允许的标签
function bstring($str){
//forbid your tags here
$forbidden_tags = array('script', 'body', 'html');
for($i = 0; $i < count($forbidden_tags); $i++){
$tag = '%<'.$forbidden_tags[$i].'.*?</'.$forbidden_tags[$i].'>%i';
$result = preg_replace($tag, 'NOT ALLOWED', $str);
}
return $result;
}
答案 3 :(得分:-1)
您可以使用 Doctrine :http://en.wikipedia.org/wiki/Doctrine_%28PHP%29
Doctrine的主要功能之一是在面向专有对象的SQL方言(称为Doctrine查询语言(DQL))中编写数据库查询的选项。实际的SQL查询仅由Doctrine生成(这样可以防止SQL注入和其他类似的事情)。
官方网站:http://www.doctrine-project.org/
请阅读有关安全性的信息:http://www.doctrine-project.org/2014/02/21/security_in_doctrine.html