javascript - $_SERVER ['PHP_self' ] 表单中的请求无需 htmlspecialchars 即可破解

标签 javascript php html mysql security

如果我在 test.php 中制作表格和form action ="<?php echo $_SERVER[PHP_self]"?>那么它就可以被黑客攻击。我知道它可以通过htmlspecialchars()来保护。但如果我使用 <form action ="test.php">反而。它不会被黑客攻击。这里有什么区别?

如果我编辑 url test.php/blah blah 那么它会变成源代码中的表单操作,但当 form action="test.php" 时不会发生这种情况。 。不是同一件事吗? test.php$_server['PHP_self']

最佳答案

当您分配 <form action ="test.php"> 时对于您的 HTML,此代码是静态的,无法在服务器端进行操作。如果您分配全局 $_SERVER['PHP_SELF'] ,那么页面中的此条目是动态的,取决于地址栏中找到的用户 URL,使他们可以像这样操作此代码:

如果世界是一个安全且值得信赖的居住地......

浏览器网址: http://www.test.com/html/form.php

<form action="/html/index.php" method="post">

现在进入现实世界......

浏览器网址: http://test.com/form.php/%22%3E%3Cscript%3Ealert('xss')%3C /script%3E%3Chack%22

<form action="/html/index.php/"><script>alert('xss')</script><hack"" method="post">

可以通过包围您的 $_SERVER['PHP_SELF'] 来避免这种情况里面htmlspecialchars()函数可以有效地清理脚本,如下所示:

<form action="/html/index.php/&quot;&gt;&lt;script&gt;alert('xss')&lt;/script&gt;&lt;hack&quot;" method="post">

关于javascript - $_SERVER ['PHP_self' ] 表单中的请求无需 htmlspecialchars 即可破解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40694672/

相关文章:

javascript - 更改背景颜色范围

php - Facebook 图形页面帖子成功但未显示在所有人的动态中

javascript - Facebook 社交插件无法在 PHP 中使用 JavaScript 分页?

html - 报告 HTML + CSS + 打印 - Chrome 错误

javascript - 显示下一个下拉列表

javascript - 图像跟随鼠标,使用mousemove事件(使用Jquery/Javascript)

用于表单输入的 Javascript switch 语句

带有方法的 Javascript 对象返回 "has no method ' 我的方法名称'"错误

php mysql 在2个表内动态选择

java - 如何在线编译Java代码?