Pac*_*ier 3 javascript php security xss
好的,我有一些用户输入,我做了一个 echo str_replace('<', '<', str_replace('&','&',$_POST['input']));
我想知道,无论如何用户可以打破这个过滤器吗?
最初我认为这个脚本非常防弹,但在阅读了一些关于php,字符集和安全性的文章后,我开始怀疑它的健壮性.
这取决于输入结束的位置.
例如,如果在某些时候你最终得到一个像这样(很差)构造的模板......
<a href="<?php echo $somevar; ?>">a link</a>
Run Code Online (Sandbox Code Playgroud)
然后有人可以通过简单地使用以下输入来注入代码:
javascript:do_whatever()
Run Code Online (Sandbox Code Playgroud)
即使输出通常不会回到href现场,这样的事情......
<a title="<?php echo $somevar; ?>" href="http://www.google.com">Google</a>
Run Code Online (Sandbox Code Playgroud)
如果输入是......可能仍然容易受到攻击
" href="javascript:do_whatever()
Run Code Online (Sandbox Code Playgroud)
所以基本上......过滤器必须对它们被使用的上下文敏感.常用的功能是htmlspecialchars()处理许多常见情况.