1、信息安全报告目录一、设计题目 4二、运行环境(软、硬件环境) 4三、算法设计的思想 41.分析SQL注入原因 42.设计改进方法 4四、算法的流程图 5五、算法设计分析 51.攻击分析: 52.防护分析 5六、源代码 6七、运行效果: 10八、运行结果分析 121.注入分析 122防护方案: 12九、收获及体会 12十、实训日记: 13一、设计题目web系统安全性攻击与防护实验(sql注入与防护)二、运行环境(软、硬件环境)Windows+Wamp5 +MySQL+PHP三、算法设计的思想1.分析SQL注入原因(1). 用户输入非法字符。(2). 系统未对用户输入的信息进行过滤(3). 系统的
2、错误提示(错误信息可能会暴露系统的一些重要参数)2.设计改进方法(1). 自定义函数对用户输入的信息进行过滤,屏蔽系统错误信息。(2). 修改系统设置,对URL传递参数进行过滤。(3). 对用户密码进行MD5加密存储。(4). 单页Session验证 ,密码用MD5加密,即服务器端验证,安全性较高。四、算法的流程图五、算法设计分析1.攻击分析:1、本系统的关键在于后台服务器验证阶段。通过输入特殊字符测试系统的错误提示,根据错误提示判断系统的稳定性。2、输入SQL关键字 “or”或者其它关键字测试 。3、根据猜测的系统过滤规则,构造出一套字符串进行注入攻击。2.防护分析1、对用户输入的信息进行过
3、滤。2、屏蔽系统的错误提示。3、对用户的密码进行加密存储。4、对URL传递的参数进行过滤 六、源代码0 & strlen($pwd)0) $pwd=md5($pwd); $query=mysql_query(select User_name from user where User_name=$user and user_password=$pwd); / select user_name form user where user_name=ad and user_password=ff or 1 or ; $num=mysql_num_rows($query); if($num) echo
4、alert(登陆成功!); ; $_SESSIONUsername=$user; echo window.location=index/user_list.php?name=$user; ; else echo alert(用户不存在,或用户名和密码不正确); ; echo window.location=index/index.php; ; else echo alert(用户名,密码不能为空); ; echo window.location=index/index.php; ; ?0 & strlen($pwdG)0 & strlen($pwd)0) if(strcmp($pwd,$pwd
5、G)=0) $pwdG=md5($pwd); $string = insert into user values ($user,$pwdG); $query=mysql_query($string); if($query) echo alert(注册成功); ; echo window.location=index/index.php; ; else echo alert(注册失败,请重新注册); ; echo window.location=index/register.php; ; else echo alert(密码不一致); ; echo window.location=index/r
6、egister.php; ; else echo alert(用户名,密码,确认密码能为空); ; echo window.location=index/register.php; ; mysql_close();?php/* * Created on 2011-6-21 * 将用户尝试判断是否存在SQL注入时,将页面都定向到统一的错误页面,用户看不到 * 本网站具体使用的数据库信息 * To change the template for this generated file go to * Window - Preferences - PHPeclipse - PHP - Code Te
7、mplates */session_start();$nam=$_GETname;if(isset($_SESSIONUsername) if($nam=$_SESSIONUsername) mysql_connect(localhost,root) or die (数据库连接失败1); mysql_select_db(sql-security)or die (无可用数据库); $query=mysql_query(select * from user where User_name=$nam) or die (数据数据库操作失败3); while($row=mysql_fetch_row($
8、query) $loginname=$row0; $loginpass=$row1; else echo window.location=error.php; ; else echo window.location=error.php; ;?七、运行效果:登录界面非法用户登录时提示错误页面,屏蔽了系统信息非法用户无权限登录,进入错误页面合法用户登录成功并用MD5加密32位存储非法用户登录成功没有显示密码,没有加密八、运行结果分析1.注入分析主要原因分析:未对用户输入的信息进行过滤,输入的字串与系统执行的代码产生冲突,从而导致系统后台误认为“验证成功”,从而进入了加密页面。输入信息:用户名:us
9、ername (随便输入,即使数据库中不存在亦可。)密码: or 1 or 实验截图如上:非法用户登录成功没有显示密码,没有加密2防护方案:防护方案1:加密后再进行用户名或密码验证;解决方案:自定义函数对用户输入的信息进行过滤后,再进行验证。防护方案2单页session验证,密码用MD5加密解决方案:用户登录时,进行加密验证,同时将用户信息加密后存入session(服务端)中。当浏览加密页面时,重新验证用户信息从网页中读取用户信息与Session中信息对比。若相同,进入下面的操作;否则,显示错误页面。从而判断用户身份是否合法。优点:当后台修改用户密码时,直接重新验证用户身份,提示重新登录,安全
10、级别较高。九、收获及体会信息安全的其根本目的就是使内部信息不受外部威胁,因此信息通常要加密。为保障信息安全,要求有信息源认证、访问控制,不能有非法软件驻留,不能有非法操作等。本次课程设计正是基于这个目的而展开的。经过一周的努力,终于实现了课设的要求,但我本人还是不怎么满意,总觉得还没达到自己的要求,可以做的更好。但是时间有限,只有短短的一周时间,只能粗略的实现要求。我和组员们经过商讨,查询了大量的资料,虽然感觉很累,但是我们在查阅的过程中,了解了信息安全的更深层的内容,在这个到处充满网络的是时代,信息安全实在是太重要了。小到如防范商业企业机密泄露、防范青少年对不良信息的浏览、个人信息的泄露等,
11、大到国家军事政治等机密安全没有一个能离开信息安全。 书本上学到的知识毕竟有限,经过这一周的学习实践,我对书本上的知识内容的理解更加深刻和透彻了。在以后的生活和学习中,我们都要注重自身信息的安全,千万不要因一时疏忽而造成无法挽回的后果。十、实训日记:星期一:选择题目,我和组员在一块进行讨论,对题目要求有进一步的了解,分析流程。星期二:经过一天的构思,大致有了点想法,开始认真编写程序。星期三:尽管有构思,但构思还只停留在大脑中,具体实现还是有一定的难度,比如MD5算法的实现。星期四:经过大量的浏览相关图书和上网查询,了解了部分功能的实现过程。经过一天的努力,网页初见端倪。但还不怎么完美,没达到我的要求。星期五:经过稍微调试,功能基本实现。向老师和同学演示
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1