输入验证:

  • 检查用户输入的合法性,确信输入的内容只包含合法的数据。数据检查应当在客户端和服务器端都执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性。
  • 输入验证最好使用“白名单”校验的方式。

输入转义:

  • 每个DBMS都有一个字符转义机制来告知DBMS输入的是数据而不是代码,如果将用户的输入都进行转义,那么DBMS就不会混淆数据和代码,也不会出现SQL注入了。

最小权限法:

  • 把每个数据库用户的权限尽可能缩小,在给用户权限时是基于用户需要什么样的权限。而不是用户不需要什么样的权限。

参数化查询:

  • 在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部分来处理,而是在数据库完成SQL指令的编译后,才套用参数运行,因此就算参数中含有恶意的指令,由于已经编译完成,就不会被数据库所运行。(这个方法目前被视为最有效可预防SQL注入攻击的防御方式)

错误消息处理:

  • 防范SQL注入,还要避免出现一些详细的错误消息,这些错误消息可能会暴露一些敏感信息被攻击者利用。

加密处理:

  • 将用户登录名称,密码等数据加密保存。加密用户输入的数据,然后再将它与数据库中保存的数据比较,这相当于对用户输入的数据进行了“消毒”处理,用户输入的数据不再对数据库有任何特殊的意义,从而防止了攻击者注入的SQL命令。

最新文章

  1. bn
  2. Python--类-例子
  3. 九度oj 1407 快速找出最小数
  4. node操作MongoDB数据库之插入
  5. js获取当前页面的url信息方法
  6. 04_HttpClient发送Https请求
  7. 360. Sort Transformed Array
  8. [翻译]理解 ASP.NET 5
  9. svn删除用户
  10. ThetaSome_ThetaAll子查询
  11. 图上最短路(Dijkstra, spfa)
  12. Microsoft Visual Studio Ultimate 2013密钥
  13. 【性能提升神器】Covering Indexes
  14. C# 收发和处理自定义的WINDOWS消息
  15. LeetCode题解之 Implement strStr()
  16. 【Error】centos7 minimal connect: Network is unreachable
  17. WordCount示例深度学习MapReduce过程
  18. 由A到D中间可不止“B、C”
  19. JAVA泛型通配符T,E,K,V区别,T以及Class<T>,Class<?>的区别以及接口里default方法
  20. Win10系统SQL数据库安装

热门文章

  1. C# List分组
  2. React使用JSX语法
  3. ACM-ICPC 2018 沈阳赛区网络预赛 G Spare Tire (素因子分解+容斥)
  4. Java集合框架中底层文档的List与Set
  5. 微信小程序_(组件)view视图容器
  6. 关于Sass和Less牵扯的问题
  7. java多线程编程详细总结
  8. IDEA找回Run Dashboard
  9. Hibernate系列1:入门程序
  10. leetcode-hard-array-128. Longest Consecutive Sequence