在表单和链接中使用 $_SERVER['REQUEST_URI'] 或 $_SERVER['PHP_SELF'] 的风险

use*_*531 5 php

使用$_SERVER['REQUEST_URI']$_SERVER['PHP_SELF']作为表单中的操作或作为链接中的 href是否有任何风险?

如果是这样,可以采取哪些措施来降低风险?

Dan*_*ows 4

您在 www.example.com/form.php 上制作一个表单。一年后,您会忘记 URL 只是抓取页面加载的任何 URL。

在某些时候,假设您在框架中添加了“删除所有内容”全局选项,作为完全不同(有点奇怪)请求的一部分。

现在,有人向您发送此链接:www.example.com/form.php?delete_everything=true。由于您只是获取该 URL 并将其设置为操作,因此现在这就是表单上的操作。哎呀。XSS 攻击本质上就是这样进行的。

始终假设您的代码将以您第一次编写代码时未预料到的方式使用(甚至由您,尤其是黑客)。

你如何解决这个问题?对 URL 进行硬编码!您可以包含一个返回 URL 的函数。实际上,这就是 Symfony 或 CodeIgniter 等框架解决该问题的方式。