php中有什么好的url验证功能来检测xss?
我在php中尝试了FILTER_URL函数,但仍允许使用以下网址:
http://example.com?<script></script>
答案 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攻击,只需确保使用正确的清理。