如何防范此类攻击?

时间:2015-02-19 15:50:36

标签: javascript php security xss

我最近有人针对某个应用程序运行了一个问题,其中发现的一个关键问题是在这样的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攻击是否有特定的名称?)

5 个答案:

答案 0 :(得分:1)

我在$_SERVER['PHP_SELF']标记中使用href,因此触发了JavaScript。

解决方案很简单。我在使用之前通过过滤器运行PHP_SELF,并且清除任何传递的垃圾并在页面上安全使用。

答案 1 :(得分:1)

先前的答案已经可以,但是由于某些原因htmlspecialchars()不能过滤单引号。如果您需要过滤单引号,则需要在htmlspecialchars($_SERVER["PHP_SELF"], ENT_QUOTES)

中添加一个参数

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

使用$_SERVER['PHP_SELF]

时要小心

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

这是正常的XSS攻击。

更多信息: Info

答案 4 :(得分:0)

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

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

上面将输出:

index.php?id=alert(1)