当前位置:  开发笔记 > 编程语言 > 正文

Markdown(带有strip_tags)是否足以阻止XSS攻击?

如何解决《Markdown(带有strip_tags)是否足以阻止XSS攻击?》经验,为你挑选了2个好方法。

我正在开发一个Web应用程序,允许用户在目录中键入项目的简短描述.我在我的textareas中允许Markdown,因此用户可以进行一些HTML格式化.

我的文本清理功能会在将任何输入的文本插入数据库之前将其删除:

public function sanitizeText($string, $allowedTags = "") {
    $string = strip_tags($string, $allowedTags);

    if(get_magic_quotes_gpc()) {
        return mysql_real_escape_string(stripslashes($string));
    } else {
        return mysql_real_escape_string($string);
    }
}

基本上,我存储在数据库中的所有内容都是Markdown - 没有其他HTML,甚至"基本HTML"(如此处的SO)是允许的.

允许降价会出现任何安全威胁吗?降价可以是XSSed,即使它没有标签吗?



1> Pascal MARTI..:

我认为从输入中删除任何HTML标记会给你一些非常安全的东西 - 除非有人找到一种方法将一些真正混乱的数据注入Markdown,让它产生一些更加混乱的输出^^

不过,我想到的有两件事:

第一个: strip_tags不是奇迹功能:它有一些缺陷......
例如,它会在'<'之后删除所有内容,在这种情况下:

$str = "10 appels is 

我得到的输出是:

string '10 appels is ' (length=13)

哪个对您的用户不太好:-(


第二个:一天或另一天,你可能想要允许一些HTML标签/属性; 或者,即使在今天,您可能希望确保Markdown不会生成一些HTML标签/属性.

您可能对像HTMLPurifier这样的东西感兴趣:它允许您指定应保留哪些标记和属性,并过滤字符串,以便只保留那些.

它还生成有效的HTML代码 - 这总是很好;-)



2> Jordan Reite..:

这是一个可爱的例子,说明为什么需要在之后而不是之前清理HTML:

降价代码:

>  
>

呈现为:

你现在担心吗?

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有