SQL注入-预防
2024-09-06 01:57:04
输入验证:
- 检查用户输入的合法性,确信输入的内容只包含合法的数据。数据检查应当在客户端和服务器端都执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性。
- 输入验证最好使用“白名单”校验的方式。
输入转义:
- 每个DBMS都有一个字符转义机制来告知DBMS输入的是数据而不是代码,如果将用户的输入都进行转义,那么DBMS就不会混淆数据和代码,也不会出现SQL注入了。
最小权限法:
- 把每个数据库用户的权限尽可能缩小,在给用户权限时是基于用户需要什么样的权限。而不是用户不需要什么样的权限。
参数化查询:
- 在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部分来处理,而是在数据库完成SQL指令的编译后,才套用参数运行,因此就算参数中含有恶意的指令,由于已经编译完成,就不会被数据库所运行。(这个方法目前被视为最有效可预防SQL注入攻击的防御方式)
错误消息处理:
- 防范SQL注入,还要避免出现一些详细的错误消息,这些错误消息可能会暴露一些敏感信息被攻击者利用。
加密处理:
- 将用户登录名称,密码等数据加密保存。加密用户输入的数据,然后再将它与数据库中保存的数据比较,这相当于对用户输入的数据进行了“消毒”处理,用户输入的数据不再对数据库有任何特殊的意义,从而防止了攻击者注入的SQL命令。
最新文章
- bn
- Python--类-例子
- 九度oj 1407 快速找出最小数
- node操作MongoDB数据库之插入
- js获取当前页面的url信息方法
- 04_HttpClient发送Https请求
- 360. Sort Transformed Array
- [翻译]理解 ASP.NET 5
- svn删除用户
- ThetaSome_ThetaAll子查询
- 图上最短路(Dijkstra, spfa)
- Microsoft Visual Studio Ultimate 2013密钥
- 【性能提升神器】Covering Indexes
- C# 收发和处理自定义的WINDOWS消息
- LeetCode题解之 Implement strStr()
- 【Error】centos7 minimal connect: Network is unreachable
- WordCount示例深度学习MapReduce过程
- 由A到D中间可不止“B、C”
- JAVA泛型通配符T,E,K,V区别,T以及Class<;T>;,Class<;?>;的区别以及接口里default方法
- Win10系统SQL数据库安装