Web安全总结

XSS跨站脚本

概念:恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。


危害:


盗取用户COOKIE信息。

跳转到钓鱼网站。

操作受害者的浏览器,查看受害者网页浏览信息等。

蠕虫攻击。

描述:反射型跨站。GET或POST内容未过滤,可以提交JS以及HTML等恶意代码。


<?php echo $_GET['msg']; ?>  
//正常URL  
user.php?msg=henhao  
//带JS的URL  
user.php?msg=<script>alert(1)</script>  
//恶意跳转URL  
user.php?msg=<script>window.history.back(-1);</script>

解决办法: 

输出过滤,PHP端输出到view的模板页面上的数据都需要经过过滤:

public function filter_html($value) {  
    if (function_exists('htmlspecialchars')) return htmlspecialchars($value);  
    return str_replace(array("&", '"', "'", "<", ">"), array("&", """, "'", "<", ">"), $value);  
}

 


CSRF跨站攻击


概念:CSRF跨站请求伪造,也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。


危害:强迫受害者的浏览器向一个易受攻击的Web应用程序发送请求,最后达到攻击者所需要的操作行为。


例子:

<img src=“http://a.com/addfriend.php?id=123”/>


1. 上面是一个图片的html标签,但是src中是一个添加id为123好友的新增好友链接。


2. 恶意用户可以将这段代码植入其它网站网页上面,甚至可以img设置为0,0,让用户不知不觉中点击这个链接,达到用户并不像加这个人好友,但是添加的目的。


3. 当很多人都无意加了id为123这个人为好友的时候,id为123的恶意用户就有权限来查看这些人的信息,甚至可以发送很多恶意的信息,达到恶意用户的目的。


解决方法:


1. http://a.com/addfriend.php?id=123 使用POST方法会相对安全一点。


2. 采用类似随即码或者令牌的形式,让用户操作唯一性。 (每次用户登录网站随机生成一个token,存放在cookie中,用户的所有操作中都需要经过token验证)

20130902173329265.jpg


带上这个init_token,然后每次请求都去验证一下就好了。token在浏览器打开的时候生效,关闭浏览器再打开浏览器的时候会变化



url跳转漏洞

概念:Web应用程序接收到用户提交的URL参数后,没有对参数做”可信任URL”的验证,就向用户浏览器返回跳转到该URL的指令。


危害:钓鱼网站


例子:


http://m.yahoo.cn/log.php?c=web&u=http://www.163.com


解决方法:


对跳转的php函数进行进一步优化,使页面跳转可以在可信任的范围内。 例如可以有跳转域名白名单方法,这个访问各大公司使用比较多


文件系统跨越漏洞

概念:对文件目录参数没有进行过滤,导致恶意用户可以通过在参数中输入一些执行命令,或者跨越访问的行为,来超出用户的访问权限。


例子:通过一个或多个../跨越目录限制


$fp = fopen("image/{$_GET['filename']}", 'r');  

Getfile?filename=../../../../etc/passwd


解决方法:


1. 对文本操作的时候一定要谨慎,不可信任


2. 严格使用phpwind中安全类库 escapePath函数



文件上传漏洞

概念:Web应用程序在处理用户上传的文件时,没有判断文件的扩展名是否在允许的范围内,或者没检测文件内容的合法性,就把文件保存在服务器上,甚至上传脚本木马到web服务器上,直接控制web服务器。


情况:


1. 未限制扩展名


2. 未检查文件内容


3. 病毒文件


解决方法:


1. 使用安全的,可信任的上传组件。


2. 检查文件扩展名,保证文件的类型正确。


3. 检查文件内容,保证用户不伪造文件类型。


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.5.2 Zero

WX:xcs345525801 QQ:345525801 Tel:19521445850 Email:xcssh868@163.com

Copyright © 2020 许承胜个人博客 版权所有 备案号:皖ICP备18014705号-1