跨站点脚本不能以php形式工作


cross site script not working in php form

我在一个网页中有一个表单,其中我给出了一个具有以下html语法的操作php页面。

<form name="form" action="test.php" method="get">

我已将其修改为

<form name="form" action="<?php echo htmlspecialchars('test.php') ?>" method="get">

但当我在地址栏中键入以下url时

http://www.example.com/test.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E

它在浏览器中输出

http://www.example.com/test.php/"><script>alert('hacked')</script>

这是错误的。我想保护我的页面以进行跨站点脚本编写。请指导我哪里做错了。

永远不要将用户输入直接放入页面。你总是想先消毒。

首选方法是将用户输入列入白名单,这意味着检查有效属性而不是无效属性。

最安全的做法是拒绝所有不满足白名单要求的输入,而不是尝试将其转换为有效的输入。

有关更多信息,请参阅OWASP的网站。以下是他们的白名单输入指南。