18910140161

PHP-如何在网页上安全地输出用户提交的链接?-堆栈溢出

顺晟科技

2022-10-19 12:42:26

125

我想允许我的网站访问者(任何汤姆,迪克和哈里)提交他们的链接到我的网页上,以便在我的网页上输出。 我需要解析用户提交的URL,然后在我的页面上回显他们提交的URL。需要解析URL,因为我不知道他们将提交什么URL,也不知道他们URL的结构。

理论上,用户可以访问我的页面并注入一些Javascript代码,例如:

?search=<script>alert('hacked')</script>

你明白我的意思。

我必须编写php脚本,当用户提交他们的URL时,我的php脚本解析他们的URL,并在通过HtmlSpecialChars输出它们之前,通过在适当的地方添加urlencode、rawurlencode、intval对它们进行编码。 另一个写了下面的脚本。问题是,它的输出如下所示:

HTTP%3a%2f%2fexample.com%2fcat%2fsubcat?var_1=value+1&var2=2&this_other=thing&number_is=13

它的输出如下所示:

http://example.com/cat/subcat?var_1=value+1&var2=2&this_other=2&this_other=thing&number_is=13

这是他们的代码.... 第三方代码:

?search=<script>alert('hacked')</script>

所以,我改变了他们的:

?search=<script>alert('hacked')</script>

关于我的这个问题(我的修正):

?search=<script>alert('hacked')</script>

而且似乎起作用了。当它输出时:

http://example.com/cat/subcat?var_1=value+1&var2=2&this_other=2&this_other=thing&number_is=13

问题1: 但是我不确定是否将raw_urlencode()放在了正确的位置,所以最好检查一下。 另外,$path不应该像这样在raw_urlencode中吗?

?search=<script>alert('hacked')</script>

但是请注意:

?search=<script>alert('hacked')</script>

输出不正确。

问题2: 我进一步更新了他们的代码到一个新版本,它不输出正确。为什么会这样?我哪里出错了? 我所做的只是加了几行。 这是我的更新(新版本)输出错误。输出如下:

HTTP%3a%2f%2fexample.com%2fcat%2fsubcat?var_1=value+1&var2=2&this_other=thing&number_is=13

我在他们的代码底部添加了几行自己的代码。

我的更新(新版本):

?search=<script>alert('hacked')</script>

这个线程实际上是关于第二个代码的。我的更新。

谢谢!


顺晟科技:

我修正了我的代码。 回答我自己的问题。

固定代码:

?search=<script>alert('hacked')</script>

下面这两行应该在else之外。他们不是。因此,所有的问题。将它们移到ELSE之外,现在脚本工作正常。

?search=<script>alert('hacked')</script>
  • TAG:
相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航