随着web、社交网络等一系列互联网新产品的不断升级,基于web环境的互联网应用越来越广泛。在企业信息化的过程中,各种应用都是建立在web平台上的。web服务的快速发展也引起了黑客的强烈关注,随之而来的是Web安全威胁的出现。对Web服务器的攻击可谓五花八门。
我们再来回顾一下前几年因为互联网安全问题发生的事件。

1.携程用户的支付信息存在漏洞:泄露的信息包括用户的姓名、身份证号、银行卡号和银行卡的CVV码。
2.UC浏览器用户敏感数据泄露漏洞:只要用户通过UC浏览器搜索登录人人网、新浪微博等网站,其提交的用户信息和密码都有可能被黑客截获。
3.小米论坛存在用户数据泄露:泄露涉及小米论坛800万注册用户。
那么造成这些问题的原因是什么呢?我来给你分析一下。
web应用程序中十个常见的安全问题
1.SQL注入拼接的SQL字符串改变了设计者的初衷,进行了泄露、更改数据等操作,甚至控制了数据库服务器,包括SQL注入、命令注入等攻击。2.跨站脚本攻击跨站脚本是指远程网页的html代码可以恶意插入数据。当浏览器下载页面时,嵌入其中的恶意脚本会被解释并执行,从而对客户端用户造成伤害。简称CSS或XSS3,无限制URL访问系统对URL访问进行了限制,但这种限制实际上并没有生效。攻击者可以很容易地通过伪造的请求直接访问未经授权的页面。4.未经授权访问系统的某个模块或功能。用户通过拼接URL或cookie来访问模块或功能。5.泄露配置信息。服务器版本信息泄露在服务器返回的提示或错误信息中,程序错误泄露物理路径,程序查询错误返回SQL语句,过于详细的用户认证返回信息。6.不安全加密存储的常见问题是密钥生成和存储不安全,没有密钥轮换,算法较弱。使用不含salt的弱算法或哈希算法来保护密码也很常见。由于访问限制,外部攻击者很难检测到此漏洞。通常他们必须先破解其他东西才能获得他们需要的权限。7.传输层保护不足。在身份验证过程中没有使用SSL/TLS,因此传输的数据和会话ID被暴露,被攻击者截获,或者使用了过期或配置不正确的证书。8.登录信息提示用户登录提示信息会给攻击者一些有用的信息。作为程序开发人员,应该对登录提示信息进行模糊化处理,防止攻击者利用登录知道用户是否存在。9.重复提交请求程序员不在代码中限制重复提交请求,以至于多次下单,重复发布帖子。恶意攻击者可能利用该漏洞批量淹没网站,导致网站瘫痪。10.网页脚本错误。访问者使用的浏览器不能完全支持页面中的脚本,导致“脚本错误”,即网站中的脚本没有被成功执行。当遇到“脚本错误”时,会弹出一个非常难看的脚本错误警告窗口。
在OWASP的十大安全问题中,以下问题占了50%以上:
Sql注入:
通过技术手段,数据库可以利用网站安全漏洞获取服务器数据库中的全部或部分数据;网站越大,用户信息越多,拖库的影响和危害就越大。
很多登录不同网站的用户,为了方便和容易记忆,往往喜欢使用统一的用户名和密码。黑客将拖库获得的用户名和密码与网银、支付宝、淘宝等有价值的网站进行匹配。,也就是所谓的“撞库”。
爆破俗称“暴力破解”或“爆破”。对于已知用户名,使用密码字典库暴力尝试破解用户密码;如果网站不限制密码重试次数,被成功爆破的概率很高。在这里,拖动数据库就是我们通常所说的sql注入,利用前端和后台的疏忽,将后台数据库中的数据全部拖出来。
解决方案:
1.不要相信用户的输入,检查用户的输入。
检查、长度限制、特殊字符代码转换
2.不要使用动态拼接SQL
参数化sql,类型确定
3.不要使用具有管理员权限的数据库连接。
为每个应用程序开放有限的独立权限。

4.不要以纯文本格式存储加密和哈希数据库机密信息。
5.不要直接将异常信息返回给用户。
用自定义错误信息包装。
跨站点脚本攻击
这里说明一下,因为跨站脚本攻击的缩写是CSS,所以缩写为XSS以区别于CSS。
当攻击者在网页中插入恶意html代码,并且用户浏览该页面时,嵌入的html代码将被执行。通常javascript是以获取用户cookie为目的注入的主要内容,xss分为反射型和存储型。两者原理类似于反射型xss,特点是按需执行;存储xss的特点是先存储后执行;这个过程可以用图表来概括。
解决方案:
内容:过滤关键字“javascript ...”
转码:分号,...
属性:安全,仅http
基于的身份验证和会话管理无效
这样的问题有很多种。下面举几个有代表性的吧。
在开发web应用程序时,为了满足要求,可能会有用户定义的身份验证方法或会话管理方法。比如url中存在会话id,这样如果直接复制别人的url,就可以直接使用那个人的账号信息;用户名、密码等信息cookie没有设置过期时间,所以当别人登录同一客户端时,也可能直接使用别人的账号;
解决方案:
避免对会话状态的未授权访问。
限制会话生存期
加密身份验证cookie的内容。
不要在网络上以纯文本形式发送密码。

是什么导致了web应用程序中的安全问题?一般来说,有以下原因
1.复杂的应用系统,代码量大,开发人员多,难免疏忽。2.系统反复升级,人员变动频繁。导致代码不一致。3.几个Web系统,比如遗留系统和试运行系统,一起运行在同一个服务器上。4.开发人员没有接受过安全编码培训或者公司根本没有统一的安全编码标准。5.测试人员经验不足或未经专业安全评估测试就发布上线。6.用户输入未经验证。1)永远不要相信用户的输入。要验证用户的输入,2)数字输入必须是合法的数字,3)在字符输入中应对编码符号进行特殊处理,4)所有输入点,包括Get、Post、cookie和其他HTTP头,都要进行验证。
总结:
Web安全是我们测试团队的两个重点,与性能测试保持同步。在开发过程中,还需要注意的是,该逃的地方就逃;屏蔽的地方屏蔽,过滤的地方过滤,以此类推。下半年又要到了,必然会有大量的抽奖等活动,会在网上开发推出。在这个过程中,安全问题是我们每一个人都应该紧张的神经。对于我们的测试人员来说,每个活动都需要结合手工安全测试和自动化安全测试。
关注51Testing软件测试网,提升it技能。离熟练只有一步之遥。


