function filter($p){
$i=0;
return str_replace("<","<",str_replace(">",">",str_replace("&","&",$p,$i),$i),$i);
}
任何想法通过这个xss预防? 只是我的想法,不做作业通过此过滤器的XSS攻击?
function filter($p){
$i=0;
return str_replace("<","<",str_replace(">",">",str_replace("&","&",$p,$i),$i),$i);
}
任何想法通过这个xss预防? 只是我的想法,不做作业通过此过滤器的XSS攻击?
正如问题勘误中提出的,这里的问题在于你试图在PHP中推出自己的替代品htmlspecialchars
。尽管您已经要求进行现场代码审查以修复潜在的XSS exploit,但实际上您已经在应用程序中指出了处理漏洞的方式。
虽然你似乎是试图做(注this answer about black- and white-lists),您可以进行反复的修正或输入模式杀毒,您将得到更好的阅读this documentation on how to address and mitigate XSS exploits和this additional documentation服务。它应该提供有关审查和重新构建您的应用程序的指导,以便干净而安全地处理这些威胁,而不是通过代码中的多个修复程序来减轻您的缓解策略。
祝您好运与您的申请!
千万不要使用黑名单。始终使用白名单。关于大量不同的攻击的Read for example here。发人深省的:)
可能。例如,如果filter
是内使用一个HTML标签,就像这样:
<input type="text" value="<?=filter($p)?>">
,攻击者可能会被强迫$p
执行XSS攻击应运而生类似:
something" onfocus="javascript:alert('test')
所以输出HTML变为:
<input type="text" value="something" onfocus="javascript:alert('test')">
为什么不直接使用htmlspecialchars()? – 2012-04-01 21:45:45
假设编码器是noob,他不知道htmlspecialchar():D 我不谈论如何预防,我想知道如何攻击:D – n0b0dybk 2012-04-01 21:50:48
Offtopic - 这个网站是不是审查代码。这就是http://codereview.stackexchange.com/的用途。但作为一般规则,不要推出自己的“安全”代码。除非你是专家,否则总会有一个或多个边缘案例让你的代码泄露。 – 2012-04-01 21:53:09