繁体   English   中英

如何防范此类攻击?

[英]How to protect against this type of attack?

我最近有人对一个应用程序运行了一次渗透测试,它发现的一个关键问题是在这样的 URL 中传递了一些垃圾:

http://example.com/index.php/
%27%3e%3c%69%4d%67%20%53%72%43%3d%78%20%4f%6e%45%72%52%6f%52%3d%61%6c%65%
72%74%28%34%37%34%31%32%29%3e

问题在于,攻击者只需添加一个斜杠,然后添加一些编码的 javascript(带有警告框的图像标签),就会杀死页面。 简单有效的攻击。

我该如何编码? 我已经在清理所有预期的用户输入(例如当用户通过index.php?id=<script>alert(1)</script> )。 那部分工作正常。

我如何防止上面第一段下面引用的意外数据? (另外,这种类型的 XSS 攻击有具体的名称吗?)

小心使用$_SERVER['PHP_SELF]

你应该做htmlspecialchars($_SERVER["PHP_SELF"]); htmlentities($_SERVER["PHP_SELF"]);

这是正常的 XSS 攻击。

更多信息:信息

我在href标签中使用了$_SERVER['PHP_SELF'] ,所以这就是触发 JavaScript 的地方。

解决方法很简单。 我在使用之前通过过滤器运行PHP_SELF ,任何通过的垃圾都被清理干净并可以安全地在页面上使用。

以前的答案已经可以了,但由于某种原因htmlspecialchars()不过滤单引号。 如果您需要过滤单引号,则需要在htmlspecialchars($_SERVER["PHP_SELF"], ENT_QUOTES)添加一个参数

我如何防止上面第一段下面引用的意外数据?

filter_input( INPUT_SERVER, 'PHP_SELF', FILTER_SANITIZE_FULL_SPECIAL_CHARS );

谢谢@Sverri M. Olsen解释为什么要使用filter_input而不是超全局变量

https://stackoverflow.com/a/15103555/11173494

另外,这种类型的 XSS 攻击有特定的名称吗?

这是存储型 XSS 黑客可以构造自定义查询,通过存储恶意代码来攻击用户。

@Sandeep Nair解释了存储型 XSS反射型 XSS之间的区别

https://stackoverflow.com/a/48893119/11173494

strip_tags()函数可能会有所帮助。 例如:

$str = 'index.php?id=<script>alert(1)</script>';    
echo "<pre>";
echo strip_tags($str), "\n";

以上将输出:

index.php?id=alert(1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM