sql注入测试(4)--如何防止该类缺陷发生
2024-08-31 22:08:35
检查用户输入的合法性,确信输入的内容只包含合法的数据,数据检查应当在客户端和服务器端都执行之所以要执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性。在客户端,攻击者完全有可能获得网页的源代码,修改验证合法性的脚本(或者直接删除脚本),然后将非法内容通过修改后的表单提交给服务器。因此,要保证验证操作确实已经执行,唯一的办法就是在服务器端也执行验证。
第二:转义敏感字符。
转义敏感字符及字符串(SQL的敏感字符包括“exec”,”xp_”,”sp_”,”declare”,”Union”,”cmd”,”+”,”//”,”..”,”;”,”‘”,”--”,”%”,”0x”,”><=!-*/()|”,和”空格”).
第三:错误消息处理
防范SQL注入,还要避免出现一些详细的错误消息,因为黑客们可以利用这些消息。要使用一种标准的输入确认机制来验证所有的输入数据的长度、类型、语句、企业规则等。
第四:加密处理
将用户登录名称、密码等数据加密保存。加密用户输入的数据,然后再将它与数据库中保存的数据比较,这相当于对用户输入的数据进行了“消毒”处理,用户输入的数据不再对数据库有任何特殊的意义,从而也就防止了攻击者注入SQL命令。
第五:存储过程来执行所有的查询
SQL参数的传递方式将防止攻击者利用单引号和连字符实施攻击。此外,它还使得数据库权限可以限制到只允许特定的存储过程执行,所有的用户输入必须遵从被调用的存储过程的安全上下文,这样就很难再发生注入式攻击了。
第六:永远不要使用动态拼装sql。
可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
最新文章
- iOS APP 如何做才安全
- github拉取和推送
- c++中static关键字的用法总结
- freeCAD预选项编辑器
- RainCup_No.1
- iptables实现反向代理
- 程序中的@Override是什么意思
- Maven进价:Maven的安装和目录结构
- D3D标注动态避让
- 动态上传多个文件(asp)
- C#- 布署WinForm程序
- 下一代hadoop
- 【Sqlserver清空数据库中所有表数据】
- iOS 使用 CATransform3D 处理 3D 影像、制做互动立体旋转的效果
- UVALive - 6185 Find the Outlier暴力填表+高斯消元+卡eps
- Confluence 6 设置公共访问
- ant使用备忘
- 16bit C &; ASM 如何混合编译?
- spring---aop(10)---Spring AOP中AspectJ
- 购物车 cookie session
热门文章
- Selenium: 利用select模块操作下拉框
- Linux中强大的top命令
- Keil综合(03)_map文件全解析[转]
- OpenJudge计算概论-数字求和
- 一个读取C#特性Description方法(zhuan)
- Java中运行动态脚本
- <;javaScript>;document.body为null的问题
- ISO/IEC 9899:2011 条款6.4.3——通用字符名
- Flutter布局基本情况总结:
- Javescript——数据类型