SQL注入

       SQL注入前端

简介:

利用现有的应用程序,将恶意的SQL命令注入到存在安全问题的应用程序的后台数据库,使得对数据库的操做不按照设计者的意图去操做。

案例

源代码:select id from users where username = '"+username +"' and password = '"  + password +"

SQL注入:select id from users where username = 'abc' or 1 = 1--  and password = '123'
注入后你随便输入用户名和密码即可以登陆

预防SQL注入

  • 前端:对用户输入的信息进行校验,避免使用操做数据库的字段、对单引号和双"-"进行转换等。sql

  • 后台:数据库

        1. 永远不要使用动态拼装sql,可使用参数化的sql或者直接使用存储过程进行数据查询存取。安全


好比mybatis中:
 <if test="goodsName != null">
        AND goods_name LIKE CONCAT('%','${goodsName}','%')
 </if>
 <if test="goodsName != null">
        AND goods_name LIKE CONCAT('%',#{goodsName},'%')
 </if>

        2. 应用程序抛出的异常进行分装,避免暴露数据库结构。mybatis

        3. 不一样应用程序使用不一样的数据库权限。加密

        4. 对于机密的信息进行加密,好比密码等。spa

相关文章
相关标签/搜索