zoukankan      html  css  js  c++  java
  • PHP表单安全过滤和防注入 htmlspecialchars() 和test_input()

    什么是 htmlspecialchars() 函数?

    htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 &lt; 和 &gt; 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。

    关于 PHP 表单安全性的重要提示

    $_SERVER["PHP_SELF"] 变量能够被黑客利用!

    如果您的页面使用了 PHP_SELF,用户能够输入下划线然后执行跨站点脚本(XSS)。

    提示:跨站点脚本(Cross-site scripting,XSS)是一种计算机安全漏洞类型,常见于 Web 应用程序。XSS 能够使攻击者向其他用户浏览的网页中输入客户端脚本。

    假设我们的一张名为 "test_form.php" 的页面中有如下表单:

    <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
    

    现在,如果用户进入的是地址栏中正常的 URL:"http://www.example.com/test_form.php",上面的代码会转换为:

    <form method="post" action="test_form.php">
    

    到目前,一切正常。

    不过,如果用户在地址栏中键入了如下 URL:

    http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
    

    在这种情况下,上面的代码会转换为:

    <form method="post" action="test_form.php"/><script>alert('hacked')</script>
    

    这段代码加入了一段脚本和一个提示命令。并且当此页面加载后,就会执行 JavaScript 代码(用户会看到一个提示框)。这仅仅是一个关于 PHP_SELF 变量如何被利用的简单无害案例。

    您应该意识到 <script> 标签内能够添加任何 JavaScript 代码!黑客能够把用户重定向到另一台服务器上的某个文件,该文件中的恶意代码能够更改全局变量或将表单提交到其他地址以保存用户数据,等等。

    test_input()

    过滤提交的信息,防止被攻击。

    function test_input($data)
    {
        $data = trim($data);//去除用户输入数据中不必要的字符 (如:空格,tab,换行)。
        $data = stripslashes($data);//去除用户输入数据中的反斜杠 ()
        $data = htmlspecialchars($data);
        return $data;
    }
  • 相关阅读:
    解决shiro多次从redis读取session的问题
    软件测试其他方法
    异常HTTP Status 500
    支付
    java面试
    SQL入门
    软件测试理论基础
    软件测试学习第一章
    Linux在终端命令行模式下智能补全功能以及组合键
    Linux安装
  • 原文地址:https://www.cnblogs.com/alexguoyihao/p/9092909.html
Copyright © 2011-2022 走看看