zoukankan      html  css  js  c++  java
  • PHP防止使用跨站脚本HTTP链接攻击

    2015-7-18 22:02:21

    PHP表单中需引起注重的地方?

    $_SERVER["PHP_SELF"] 变量有可能会被黑客使用!

    当黑 客使用跨网站脚本的HTTP链接来攻击时,$_SERVER["PHP_SELF"]服务器变量也会被植入脚本。原因就是跨网站脚本是附在执行文件的路径 后面的,因此$_SERVER["PHP_SELF"]的字符串就会包含HTTP链接后面的JavaScript程序代码。

    Note XSS又叫 CSS (Cross-Site Script) ,跨站脚本攻击。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。

    指定以下表单文件名为 "test_form.php":

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

    现在,我们使用URL来指定提交地址 "http://www.w3cschool.cc/test_form.php",以上代码修改为如下所示:

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

    这样做就很好了。

    但是,考虑到用户会在浏览器地址栏中输入以下地址:

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

    In this case, the above code will be translated to:

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

    代码中添加了 script 标签,并添加了alert命令。 当页面载入时会执行该Javascript代码(用户会看到弹出框)。 这仅仅只是一个简单的实例来说明PHP_SELF变量会被黑客利用。

    请注意, 任何JavaScript代码可以添加在<script>标签中! 黑客可以利用这点重定向页面到另外一台服务器的页面上,页面 代码文件中可以保护恶意代码,代码可以修改全局变量或者获取用户的表单数据,实例:


    如何避免 $_SERVER["PHP_SELF"] 被利用?

    $_SERVER["PHP_SELF"] 可以通过 htmlspecialchars() 函数来避免被利用。

    form 代码如下所示:

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

    htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。现在如果用户想利用 PHP_SELF 变量, 结果将输出如下所示:

    <form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

    尝试该漏洞失败!

  • 相关阅读:
    剑指Offer(书):重建二叉树
    剑指Offer(书):从尾到头打印链表
    剑指Offer(书):替换空格
    剑指Offer(书):二维数组中的查找
    剑指Offer(书):数组中重复的数字
    剑指Offer(书):实现单例模式
    Centos 7安装Mysql5.7
    3000客接口迁移一记
    安装完Centos 7后的一些处理
    算法笔记—入门篇(2)—算法初步(更新中......)
  • 原文地址:https://www.cnblogs.com/lswit/p/4657784.html
Copyright © 2011-2022 走看看