• web攻击方式和防御方法


    在http请求报文中载入攻击代码,就能发起对web应用的攻击。通过url查询字段或者表单、http首部、cookie等途径吧攻击代码传入,若这时web应用存在安全漏洞,那内部信息就会遭到窃取!

    对web的攻击模式有两种:
    1. 主动攻击(主动攻击server)
    2. 被动攻击(上传木马程序,用户訪问时触发http陷阱)


    实施的安全策略主要分为两步:
    1. client验证
    2. 服务端验证(输入值验证。输出值转义)

    两种基本的攻击方式
    1.SQL注入攻击(php防止方法是使用mysqli_real_escape_string或者addslashes进行输入数据的转义)
    2.XSS攻击(运行js代码获取用户的cookie等信息。进行验证。使用strip_tagshtmlspecialchars或者htmlentities


    sql攻击破解

    <?

    php
     $clean = array();
    $mysql = array();

    $clean['last_name'] = "O'Reilly";
    $mysql['last_name'] = mysql_real_escape_string($clean['last_name']);

    $sql = "INSERT
          INTO   user (last_name)
          VALUES ('{$mysql['last_name']}')";
     ?>


    mysqli_real_escape_string

    (PHP 5)

    mysqli::real_escape_string -- mysqli_real_escape_string — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection


    尽量使用为你的数据库设计的转义函数。

    假设没有,使用函数addslashes()是终于的比較好的方法。

    string addslashes string $str )

    返回字符串。该字符串为了数据库查询语句等的须要在某些字符前加上了反斜线。

    这些字符是单引號(')、双引號(")、反斜线()与    NUL( NULL 字符)。




    htmlspecialchars仅仅是将下列的特殊字符转换成实体。htmlentities是将全部的有实体的html标签转换成相应的实体
    • '&' (ampersand) becomes '&amp;'
    • '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.
    • "'" (single quote) becomes '&#039;' (or &apos;) only when ENT_QUOTES is set.
    • '<' (less than) becomes '&lt;'
    • '>' (greater than) becomes '&gt;' 

    防止xss攻击

    //这是一个有xss攻击的php代码xss.php
    <?

    php

    if (isset($_POST['name'])){
    //     $str = trim($_POST['name']);  //清理空格
    //     $str = strip_tags($str);   //去除html标签
    //     $str = htmlspecialchars($str);   //将字符串内容转化成html实体
    //     $str = addslashes($str);
    //     echo $str;
    echo $_POST['name'];
    }
    setcookie("aaa",'bbb');
    ?>
    <form method="post" action="">
    <input name="name" type="text" width="200">
    <input type="submit" value="提交" >
    </form>


    当我訪问该页面,而且输入框中输入<script>alert(document.cookie);</script>。以下是原始的页面

    点击提交之后

    点击确定button

    注意head内部已经有我们提交的js代码。

    假设我们取消代码中的红色的凝视部分。再次运行

  • 相关阅读:
    UIButton和UIImageView的区别
    大道至简第八章读后感
    简单登录界面
    大道至简第七章读后感
    计算成绩代码
    大道至简第六章读后感
    产生随机数代码
    大道至简第五章读后感
    计算成绩算法
    加密算法
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5145304.html
Copyright © 2020-2023  润新知