从今年暑假到今天,我在课外学习了基本老师推荐的书籍
《headfirst java》、《headfirst php&mysql》、《javascript》、《html5&css3》、《图解HTTP》。尽管没能完全学到所有的精髓,但是我认为我已经对web安全有了比较好的了解
随后我搭建网站有了博客,也写了有功能的网页,再让我对数据的传输交互有了理解,对待安全问题我想规范的编码方式很重要,还有从这次爆发的漏洞看来,果然,用户输入的一切都是不可信的,哈。
阅读《漏洞利用及渗透测试基础第二版》第九章web安全基础,其中关于web的知识点大体我都已经学过了,看懂代码没什么问题,它们都曾出现在开头我说的那几本书里。那么本篇就学习一下著名的owasp(open web application security project)开放式web应用程序安全项目 。
经典的2010年10大安全威胁排名:
1.注入
2.跨站脚本
3.遭破坏的身份认证和会话管理
4.不安全的直接对象引用
5.跨站请求伪造
6.安全配置错误
7.不安全的加密存储
8.没有限制的url访问
9.传输层保护不足
10.未验证的重定向和转发
在遭破坏的身份认证和会话管理这点上,认证(authentication)和授权(authorization)很重要,那么多电信诈骗,很多时候人们贪小便宜为了免费的礼物扫码,殊不知这一扫就把自己的身份认证给了对方,很快的账号就被窃取。
人们一般对简短的,看起来很正常的域名相对缺乏防备,他们很少产生顾虑去点击这些不明的短链接,殊不知那是黑客构造好的含带恶意脚本的url,经过工具变成的短链接。
我有一次惨痛的经历,那是疫情期间在家上网课的时候,当时我还在通过app上网课,此时看到老师演示画面班群一直闪烁,有人被盗号了一直发消息,正当我还在好奇是哪个小倒霉蛋中招的时候,打开qq一看,操,是我。说这个故事是我学习安全,没有点击连接,没有躲开画面,在毫不知情没有理由的情况我怀疑我被跨站了,也就是我可能点到了挂有木马的某些网页。所以我觉得除了不要乱点网页,也不要打开过多的网页防止被跨站。
为啥,我们被窃取的是啥,是一点连接账号密码就没了吗,不是,是一点链接我们的session被盗了,黑客用我们的身份去做坏事,就是会话劫持。
那我们知道cookie和session是有有效期的,cookie时间过了,session设置的时间到了或者关闭网页或者注销,不久销毁了session了吗?会话保持攻击,黑客会一直刷新让服务器认为客户一直在线,用下面代码可以实现:
<script>
var ul=”http://xxx.xx.com/index.php?sid=1″;
Windows.setInterval(“keepsid()”),6000);
Function keepsid()
{
Document.getElementById(“a1”).src=url+”&time=”+Math.random();
}
</script>
<iframe id =”a1″ src=””> </iframe>
[防御]:设置时间强制销毁session
那么在不安全的直接对象引用这方面,就是有些不太聪明的程序员把不应该给别人知道的对象引用直接暴露给别人,也就是DOR(Direct Object Reference)直接对象引用。用户此时只要改一下url就能直接引用对象,有时候会访问到未授权的内容。(那不就是目录跳转了吗….)(也不是,就是修改参数来跳转。)
再谈谈未验证的重定向和转发。重定向(http状态码3xx)是网络请求从一个网址转移到另一个网址。重定向的指向目的是通过用户输入的参数得到,如果没有经过验证,攻击者就可以将其他用户引导到特定的站点(坏坏的网站只能说)这些站点可能有木马,可能是钓鱼网站。未经验证的转发可能导致用户绕过验证和授权机制。
[防御]:避免使用重定向和转发;使用重定向和转发的时候要避免通过参数获得地址;如果必须要获得地址,必须经过校验,加强授权和认证。
