zoukankan      html  css  js  c++  java
  • 什么是sql注入?如何有效防止sql注入?

    一、什么是sql注入

      利用程序员的代码bug,将输入的参数绕过校验并在系统中当做代码运行,从而攻击系统。

    二、如何避免sql注入

    1.对sql语句进行预编译

      PreparedStatement类可以对sql语句进行预编译,那么传入的参数只会被当做参数而不会被当做代码去运行。

    2.存储过程  

      存储过程是被编译后存储在数据库中的,所以它不会有sql注入的隐患。

    3.mybatis框架可避免sql注入

      mybatis进行参数传递的占位符有两种#{}和${},#{}在进行参数传递时会先进行sql编译然后再替换参数,所以不会有sql注入的问题,${}进行参数传递时会先拼接sql然后进行sql编译,会有安全隐患。因此非特殊情况,尽量使用#{}进行参数传递。

    4.mybatis中like的安全风险

      select * from test clomn like '%${filed}%'. 该sql语句有注入风险,改为select * from test clomn like concat('%',#{filed},'%')。

    5.入参的安全校验

      前后端可对输入的参数进行特殊字符过滤,避免别有用心的参数进入。

  • 相关阅读:
    RAID、LVM和btrfs文件系统
    RAID、LVM和btrfs文件系统
    python实现二分叉查找
    python实现二分叉查找
    python实现二分叉查找
    python实现二分叉查找
    java集合的简单用法
    java集合的简单用法
    java集合的简单用法
    用 AJAX 读取xml 节点属性值
  • 原文地址:https://www.cnblogs.com/jxxblogs/p/14799294.html
Copyright © 2011-2022 走看看