缓冲区溢出问题
缓存溢出(Buffer overflow),是针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据)从而破坏程序运行并取得程序乃至系统的控制权。 缓存溢出原指当某个数据超过了处理程序限制的范围时,程序出现的异常操作。造成此现象的原因有: 存在缺陷的程序设计。 尤其是C语言,不像其他一些高级语言会自动进行数组或者指针的边界检查,增加溢出风险。 C语言中的C标准库还具有相当一些非常危险的操作函数,使用不当也为溢出创造条件
java中都会有边界检查的,是不是java语言的设计上不存在缓冲区溢出的问题呢?
XSS(Cross-site scripting)跨站脚本
XSS攻击就是让不支持富文本的区域支持了富文本的执行,例如blog的标题是不支持富文本的,但由于页面显示时没去做处理,导致了可以在标题中嵌入文本加粗等普通HTML代码,当然,攻击者也就可以嵌入恶意的javascript了,例如获取你在当前网站的cookie的javascript:document.cookie等等。另外一种就是支持富文本的区域没有去过滤一些恶意的javascript,例如blog的文章内容中内嵌获取cookie等恶意的javascript代码, 另外一种比较典型的是dom xss的情况,这种情况多数是攻击者利用直接闭合标签,从而执行恶意的javascript代码。例如页面中有个文本框:<input type=text value="$!prevPage.someText">,那么只要在页面中输入"><script>alert(document.cookie);</script>这样的内容,显示的时候就会变成:<input type=text value=""><script>alert(document.cookie);</script>>,攻击者通过闭合input标签实现了执行恶意的javascript代码,同样,如果你的javascript中也有类似的读取url参数或前页提交的内容,又或数据库中的内容的话,攻击者都有可能利用这种闭合标签的方式来实施攻击。
CSRF(Cross-site request forgery)跨站请求伪造
CSRF听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。 比如你一个窗口登陆了网银,一个窗口在网络上浏览论坛,而论坛中有个坏人放了一张图片包含恶意的链接,它会拿到你网银的cookie,向网银的网站提交请求。你只是点了一张图片而已,却在未授权的情况下像你的网银的网站发送了请求。 CSRF是一种依赖web浏览器的、被混淆过的代理人攻击(deputy attack)。在上面银行示例中的代理人是你的web浏览器,它被混淆后误将你的授权(cookie)直接交给了坏人使用。
下面是CSRF的常见特性:
- 依靠用户标识危害网站
- 利用网站对用户标识的信任
- 欺骗用户的浏览器发送HTTP请求给目标站点
- 另外可以通过IMG标签会触发一个GET请求,可以利用它来实现CSRF攻击。 不过如果目标网站(比如网银的网站)有二次认证的话,这个CSRF的冲击就无效了。因为它是想偷偷的干成某事,二次认证需要的其他验证信息它可能并不具有。
点击劫持(Click Jacking)
点击劫持是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe 页面的位置,可以诱使用户恰好点击在iframe 页面的一些功能性按钮上。 点击劫持攻击与CSRF 攻击(详见“跨站点请求伪造”一章)有异曲同工之妙,都是在用户不知情的情况下诱使用户完成一些动作。但是在CSRF 攻击的过程中,如果出现用户交互的页面,则攻击可能会无法顺利完成。与之相反的是,点击劫持没有这个顾虑,它利用的就是与用户产生交互的页面。
SQL注入
比如用户密码的验证,你的sql语句这么写的 "select * from user where username = '"+username+"' and password = '"+password+"'"; 你设想的是用户名密码正确才能登陆成功,但是他们传进来的可能是 ' or 1=1 -- 这样语句就成了select * from user where username = '' or 1=1 --后面的语句被--注释掉了。这样无论用户密码是否正确,sql注入方式都能够登陆成功。
文件上传漏洞
DDoS(Distributed Denial of Service)分布式拒绝服务
最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。 DDoS攻击:如果说计算机与网络的处理能力加大了10倍,用一台攻击机来攻击不再能起作用的话,攻击者使用10台攻击机同时攻击呢?用100台呢?DDoS就是利用更多的傀儡机(肉鸡)来发起进攻,以比从前更大的规模来进攻受害者。