• SQL注入和XSS攻击


    SQL注入

    定义:黑客通过在请求的数据中填入特殊字符,影响服务器数据库操作程序正常执行,从而达到攻击的目的。

    形式:

    拼接SQL:

    登录验证:前台输入 username:yan password:123’ or  1#

    SQL语句:select * from user where username=’$username’ and password=’$password’

    拼接后:select * from user where username=’yan ’ and password=’123’ or 1#’==>

    防范:

    1. 加密(存密文,验证时穿密文) 123’ or ‘1-->0casdfh23uah15fjkj18ap

    缺点:不可能对所有数据加密,除密码外其他字段也可以做手脚比如 yan’ or 1#=>’yan’ or 1#’(注释掉后面所有条件)

    1. 转义特殊字符

    上述操作本质是利用了特殊字符’ 只需转义数据里的特殊字符就可以防范此类攻 击了。

    123’ or  1#==>123’ or 1

    select * from user where username=’yan ’ and password=’123’ or 1#’ //SQL报错

    数字注入

    用户id1的用户点击删除

    Delete from user where id =1

    恶意用户 发起请求传入 1 or 1==>Delete from user where id = 1 or 1 (删除所有用户数据)

      防范:将数字类型参数进行类型转换 1 or 1==>转换失败 无法执行恶意语句

    结论:除了上面提到的用户密码验证,其他所有的请求数据都有可能成为攻击的目标,所以首先应该对所有请求数据进行安全处理,例如转义类型转换等。

    XSS攻击

    定义:XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括JavaVBScriptActiveXFlash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

    举例

    下面是一个简单的php程序,前端表单提交数据,后端直接输出用户输入的内容

    form.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form action="xss.php" method="post">
            <input type="text" name="content" placeholder="输入内容"/>
            <input type="submit" placeholder="提交"/>
        </form>
    </body>
    </html><!DOCTYPE html>

    <html lang="en">

    <head>

        <meta charset="UTF-8">

        <title>Title</title>

    </head>

    <body>

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

            <input type="text" name="content" placeholder="输入内容"/>

            <input type="submit" placeholder="提交"/>

        </form>

    </body>

    </html>

    xss.php

    <?php
    echo $_POST['content'];

    恶意执行js:

    输入内容:<script>alert(“你好啊”)</script>

    获取cookie信息:

    输入内容:<script>alert(document.cookie)</script>

    破坏html页面:

    输入内容:

    <h1>XSS攻击</h1>

    防范:

    以上攻击的主要原理就是输入了前端代码标签侵入了前端代码,只须对<>转义就可以防范此类攻击。

    <  转义成 <

    >  转义成 >

    结论: 要防范SQL注入和XSS攻击,就需要对前端发来的请求数据中的特殊字符都进行转义。(‘’和<>)

  • 相关阅读:
    直接选择排序(C++模版技术实现)
    求素数
    快速排序(C++模版技术实现)
    堆排序(C++模版技术实现)
    简单链式二叉树(C++模版技术实现)
    归并排序(C++模版技术实现)
    求斐波那契数列的两种解法
    C++中改变setw(n)的对齐方式
    C中的64位整型
    Windows版GCC之TDMGCC 4.5.2
  • 原文地址:https://www.cnblogs.com/yanshaoshuai/p/11879272.html
Copyright © 2020-2023  润新知