这个PHP重定向是不安全的吗?

new*_*php 10 php header

嗯,我无法确定任何不安全因素,但想知道你是否可以,如果是这样,如何修补/修补?

下面是代码:

header("Location: http://example.com/search/{$_POST['term']}/{$_POST['type']}");
Run Code Online (Sandbox Code Playgroud)

我正在重定向的网站也进行了验证和消毒,但我关注的是 - 这是否以任何方式重定向不安全(在我身边 - 看到我正在使用直接$_POST的).

感谢所有帮助.

PS:只是变得好奇,因为我一直认为使用未经批准的用户输入是危险的(或至少适用于XSS和SQLi).

ide*_*ide 9

总的来说,对于运行现代版PHP的大多数网站来说,它是安全的.

手头有两个问题:

  • 恶意用户可能会欺骗受害者无意中访问/search/*/*网站上表单的任何页面,方法是将其链接到使用重定向发布到页面的恶意页面.(请注意,它们不仅限于两个斜杠,/search因为它们的POST变量可能包含斜杠.)这类似于将某个缩短的bit.ly URL重定向到它们,因此它并不太糟糕.
  • HTTP响应拆分.如果恶意用户\r\n在其POST数据中包含换行符(特别是CRLF/),则可能导致您的header()呼叫输出多个标头,包括用于设置Cookie的标头等.但是,从PHP 5.1.2开始,这已得到修复.