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