Web应用程序中是什么导致安全性问题呢?一般有以下几个原因:
1、复杂应用系统代码量大、开发人员多、难免出现疏忽。
2、系统屡次升级、人员频繁变更,导致代码不一致。
3、历史遗留系统、试运行系统等多个Web系统共同运行于同一台服务器上。
4、开发人员未经过安全编码培训或者公司根本就没有统一的安全编码规范。
5、测试人员经验不足或者没经过专业的安全评估测试就发布上线。
6、没有对用户的输入进行验证,举几个例子:
1)永远不要信任用户的输入,要对用户的输入进行校验
2)数字型的输入必须是合法的数字
3)字符型的输入中对 编码符号要进行特殊处理
4)验证所有的输入点,包括Get,Post,Cookie以及其他HTTP头
Web应用通常存在的十大安全问题:
1、SQL注入
拼接的SQL字符串改变了设计者原来的意图,执行了如泄露、改变数据等操作,甚至控制数据库服务器, SQL Injection与Command Injection等攻击包括在内。
2、跨站脚本攻击(简称CSS或XSS)
跨站脚本(Cross - SiteScripting)是指远程Web页面的Html代码可以插入具有恶意目的数据,当浏览器下载该页面,嵌入其中的恶意脚本将被解释执行,从而对客户端用户造成伤害。
3、没有限制URL访问
系统已经对URL的访问做了限制,但这种限制却实际并没有生效。攻击者能够很容易的伪造请求,直接访问未被授权的页面.。
4、越权访问
用户对系统的某个模块或功能没有权限,通过拼接URL或Cookie欺骗来访问该模块或功能。
5、泄露配置信息
服务器返回的提示或错误信息中出现服务器版本信息泄露、程序出错泄露物理路径、程序查询出错返回SQL语句、过于详细的用户验证返回信息。
6、不安全的加密存储
常见的问题是不安全的密钥生成和储存、不轮换密钥和使用弱算法。使用弱的或者不带Salt
的哈希算法来保护密码也很普遍。外部攻击者因访问的局限性很难探测这种漏洞。他们须先破解其他东西以获得需要的访问。
7、传输层保护不足
在身份验证过程中没有使用SSL / TLS,因此暴露传输数据和会话ID,被攻击者截听,或使
用过期或者配置不正确的证书。
8、登录信息提示
用户登录提示信息会给攻击者一些有用的信息,作为程序的开发人员应该做到对登录提示信息的模糊化,以防攻击者利用登录得知用户是否存在。
9、重复提交请求
程序员在代码中没有对重复提交请求做限制,这样就会出现订单被多次下单,帖子被重
复发布。恶意攻击者可能利用此漏洞对网站进行批量灌水,致使网站瘫痪。
10、网页脚本错误
访问者所使用的浏览器不能完全支持页面里的脚本,形成“脚本错误”,也就是网站中的脚本没有被成功执行。遇到“脚本错误”时一般会弹出一个非常难看的脚本运行错误警告窗口
归纳一下,主要有以下几点:
1、永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式或限制长度;对单引号和双”-“进行转换等。
2、永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。
3、永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4、不要把机密信息直接存放,加密或者Hash掉密码和敏感的信息。
5、应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。
6、SQL注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用SQL注入检测工具jsky、MDCSOFT SCAN等。采用MDCSOFT - IPS可以有效的防御SQL注入、XSS攻击等。
欢迎大家在工作和学习中相互交流和成长。 文章来自非比君测的转载,作者非比君,因为没有找到原链接,所以暂不列出。
最后,支付宝账号(supassxu@163.com),感兴趣的朋友可以激励下本人,哈哈,请不要超过6元,谢谢,非诚勿扰。