(这应该是一些意见 - 但是发帖的,由于长度的答案/格式化考虑)
我真的努力想象什么样的代码将很容易受到XSS攻击时所呈现的:
https://test.com/abcd/contactus.php/t54xd">alert(1)rvdgz?id=1
要删除所有标签
但也有在你提供的例子中没有(html)标签(除非它们已经被编辑器在这里改变了)。
的金科玉律是:
即
如果你不喜欢输入的外观,不接受它。不要试图将数据更改为可接受的数据(除非您完全知道您可以保留并恢复原始信息和转换的事实)。
始终确保数据表示符合它离开代码的位置。将数据写入Javascript,写入SQL语句,写入CSS,写入HTML,写入CSV文件....都需要不同的数据表示。
但是你似乎试图在这里应用非线性,不可逆变换来输入。
您的输入是not a valid URL,但奇怪的是,在我本地的PHP 5.3.3安装中,filter_var()不会抱怨它(在路径中不允许有>
字符)。来自RFC 2396:
虽然它们在URI语法内不允许使用,但我们在这里包括那些已被排除的US-ASCII字符的描述以及它们排除的原因[...]。 “<”和“>”和双引号(“)字符被排除。
RFC详细描述了什么是有效的URL应该是什么样子。实现一个功能,应用此验证是微不足道的,但是,这不会阻止XSS攻击
如果您提供的网址是一个有效的攻击,那么任何解决问题的方法也会被定位在这里讨论,并通过修复代码中其他位置的错误可以更好地解决问题。