在这种情况下,如何使用PHP防止javascript(http://my_host_here.com/publicati

how do I prevent javascript in this situation using PHP (http://my_host_here.com/publications.php/"><script>alert(1)</script>)?

本文关键字:my host publicati com here http 这种情况下 何使用 PHP javascript 防止      更新时间:2023-09-26

我已经尝试了下面的代码,但javascript似乎是在http请求发送到服务器之前运行的。

感谢

<?php
class secure
{
    function secureSuperGlobalGET(&$value, $key)
    {
        $_GET[$key] = htmlspecialchars(stripslashes($_GET[$key]));
        $_GET[$key] = str_ireplace("script", "blocked", $_GET[$key]);
        $_GET[$key] = mysql_escape_string($_GET[$key]);
        return $_GET[$key];
    }
    function secureSuperGlobalPOST(&$value, $key)
    {
        $_POST[$key] = htmlspecialchars(stripslashes($_POST[$key]));
        $_POST[$key] = str_ireplace("script", "blocked", $_POST[$key]);
        $_POST[$key] = mysql_escape_string($_POST[$key]);
        return $_POST[$key];
    }
    function secureGlobals()
    {
        echo "in here";
        array_walk($_GET, array($this, 'secureSuperGlobalGET'));
        array_walk($_POST, array($this, 'secureSuperGlobalPOST'));
    }
}
?>
  1. "安全"地开除你的班级
  2. 对于作为带引号的字符串传入SQL查询的值,仅使用mysql_[real_]escape_string
  3. 任何其他SQL部分都必须根据其角色进行格式化
  4. 在组装查询之前设置SQL部分的格式,而不是在其他地方
  5. 或者更好地使用占位符

最后,为了回答您的问题:在回显用户提交的值时,对其使用htmlspecialchar((。

如果在代码返回服务器之前运行Javascript,那么这很可能是某种形式的基于DOM的XSS。Javascript可能提取/"><script>alert(1)</script>的值并将其直接放入DOM中。您可能需要更改客户端处理此问题的方式。

OWASP对如何抵御基于DOM的跨站点脚本攻击进行了精彩的概述,例如以下内容:https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet