【攻击与漏洞】-SQL注入

安全设计原则:数据与代码分离

注入攻击的本质,是把用户输入的数据当做代码来执行了。这里有两个关键的条件

1.用户能够控制输入

2.原本程序要执行的代码,拼接了用户输入的数据

  • 判断是否有sql注入
    • 错误回显
      • 攻击者在参数中输入一个单引号,引起执行查询语句的语法错误,服务器直接返回错误信息,其中暴露的敏感信息能让攻击者的攻击更加得心应手
    • 盲注
      • 盲注指的是在服务器没有错误回显的时候开展的注入攻击。最简单的盲注验证方式是构造一条条件判断语句。
      • 如果正常的查询语句是 select title from items where id=2
      • 第一步:构造select title from items where id=2 and 1=2  因为1=2是永远不会成立的,所以页面上应该返回不了任何数据
      • 第二步:构造select title from items where id=2 and 1=1 此时页面正常返回
      • 这时就说明 id 处存在sql注入的风险
  • 数据库攻击技巧
    • (自动化sql注入工具 sqlmap)
    • (判断注入点的类型)
  • SQL预防
    • 使用预编译语句:绑定变量。(预编译语句指的是编程语言中集成好的对数据库的操作函数)
    • 使用存储过程:与预编译语句类似,区别是存储过程需要先将sql语句定义在数据库中
    • 检查数据类型

猜你喜欢

转载自blog.csdn.net/qq_39328436/article/details/114295554