我的一个GET变量允许所有可以通过urlencoding来弄乱URL的字符。麻烦的是,这意味着标签可以传递给脚本并显示在html中,不是很好!特别是因为它习惯于在mysql db上运行SELECT。
所以我现在正在使用的是一个散列在一起的preg_replace,它可以删除所有标签(下图)
$getstring = preg_replace("/(<\/?)(\w+)([^>]*>)/e","", $getstring);
这是否足够或是否有一个我错过的空洞?
答案 0 :(得分:2)
htmlspecialchars()
将允许显示特殊字符。 HTML标记将显示为普通文本(即转义),因此如果有人有太多时间,您可以看到他们尝试过的内容。如果您想在此之后过滤某些标签,请使用之前的尝试来指导您。
如果您想允许某些格式设置,请将strip_tags
与白名单一起使用以允许一些基本标记。或者,标记语言(例如Markdown(此处使用)或ReMarkable)可能会有用,具体取决于用户的技术级别。
听起来好像你也容易受到SQL注入攻击。你应该尽可能使用参数化查询,使用mysqli(问题有mysql-query标签)或PDO。 PDO::prepare()
应该让你加快速度。
答案 1 :(得分:1)