我想熟悉跨站点脚本,所以我试图利用他们在课堂上提供给我们的一些易受攻击的例子。现在我有一个表单,当表单提交时,其值存储在PHP的$_REQUEST['in']
中,然后在响应返回时打印在页面的其他位置。要打印其内容,我们会使用另一个变量$var
从$_REQUEST['in']
中检索它,然后使用echo $var
。
现在我的赌注是将JS代码编写到$_REQUEST['in']
中,以便在返回时将其打印在HTML文件中并执行。问题是echo
正在将字符<
和>
更改为等效的<
和>
,这使得JS代码显示为普通文本。没有使用HTML编码方法,所以这就是为什么我有点困惑。你能否给出我为何会发生这种情况的任何暗示?
这是正在使用$var
的文件部分。
<div id="feedback" class="alert alert-warning">
<?php echo $var; ?>
</div>
我重新检查代码,寻找一些借口方法,但我没有看到任何方法。它们包括this JS,但我不认为编码是在那里完成的,因为它没有直接提供给我们。
答案 0 :(得分:1)
在最终回音为htmlentities
或htmlspecialchars
在旁注中,echo不会对它只是试图输出任何东西进行任何更改,有时会失败!