• 什么是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.入参的安全校验

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

  • 相关阅读:
    RandomAccessFile类
    IO_ObjectOutputStream(对象的序列化)
    IO流_文件切割与合并(带配置信息)
    IO流_文件切割与合并
    IO流_SequenceInputStream(序列流)
    10-stack
    9-queue
    16-两种方法全排列
    8-全排列next_permutation
    15-Call to your teacher(有向图的连通判断)
  • 原文地址:https://www.cnblogs.com/jxxblogs/p/14799294.html
Copyright © 2020-2023  润新知