使用URL验证检测XSS

时间:2014-07-27 06:07:25

标签: php

php中有什么好的url验证功能来检测xss?

我在php中尝试了FILTER_URL函数,但仍允许使用以下网址:

http://example.com?<script></script>

2 个答案:

答案 0 :(得分:0)

您可以使用htmlspecialchars()strip_tags(),但它们不会完全阻止任何事情。

使用这些以及其他启发式的组合。理想情况下,编写自己的函数,通过一系列检查传递内容。 filter_input也可以在其中使用。

答案 1 :(得分:0)

您可以尝试这四项测试:

// Set the patterns we'll test against
$patterns = array(
    // Match any attribute starting with "on" or xmlns
    '#(<[^>]+[\x00-\x20\"\'\/])(on|xmlns)[^>]*>?#iUu',

    // Match javascript:, livescript:, vbscript: and mocha: protocols
    '!((java|live|vb)script|mocha):(\w)*!iUu',
    '#-moz-binding[\x00-\x20]*:#u',

    // Match style attributes
    '#(<[^>]+[\x00-\x20\"\'\/])style=[^>]*>?#iUu',

    // Match unneeded tags
    '#</*(applet|meta|xml|blink|link|style|script|embed|object|iframe|frame|frameset|ilayer|layer|bgsound|title|base)[^>]*>?#i'
);

而不是尝试检测XSS攻击,只需确保使用正确的清理。