• SQL预编译


    MySQL :: MySQL 8.0 Reference Manual :: 13.5 Prepared Statements https://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html

    预编译语句(Prepared Statements)介绍,以MySQL为例 - 活在夢裡 - 博客园 https://www.cnblogs.com/micrari/p/7112781.html

    SQL预编译 - 简书 https://www.jianshu.com/p/9972d7b33061

     4.1.8. 预编译 — Web安全学习笔记 1.0 文档 https://websec.readthedocs.io/zh/latest/vuln/sql/precompile.html

    4.1.8. 预编译

    4.1.8.1. 简介

    SQL注入是因为解释器将传入的数据当成命令执行而导致的,预编译是用于解决这个问题的一种方法。和普通的执行流程不同,预编译将一次查询通过两次交互完成,第一次交互发送查询语句的模板,由后端的SQL引擎进行解析为AST或Opcode,第二次交互发送数据,代入AST或Opcode中执行。因为此时语法解析已经完成,所以不会再出现混淆数据和代码的过程。

    4.1.8.2. 模拟预编译

    为了防止低版本数据库不支持预编译的情况,模拟预编译会在客户端内部模拟参数绑定的过程,进行自定义的转义。

    4.1.8.3. 绕过

    4.1.8.3.1. 预编译使用错误

    预编译只是使用占位符替代的字段值的部分,如果第一次交互传入的命令使用了字符串拼接,使得命令是攻击者可控的,那么预编译不会生效。

    4.1.8.3.2. 部分参数不可预编译

    在有的情况下,数据库处理引擎会检查数据表和数据列是否存在,因此数据表名和列名不能被占位符所替代。这种情况下如果表名和列名可控,则可能引入漏洞。

    4.1.8.3.3. 预编译实现错误

    部分语言引擎在实现上存在一定问题,可能会存在绕过漏洞。

  • 相关阅读:
    vue
    手写Promise
    Promise应用
    Promise
    JS_URL模块
    模板字符串应用
    JS-OOP
    jQuery——过时,但是经典,关注核心点即可。
    MySql补充
    offset系列
  • 原文地址:https://www.cnblogs.com/rsapaper/p/14872557.html
Copyright © 2020-2023  润新知