JSP基本登录模块(防SQL注入攻击)
上一篇 / 下一篇 2009-09-03 15:58:24 / 个人分类:JAVA
在JSP基本登录模块Ⅳ中,如果在密码栏输入“' or '1'='1”,我们发现不知道密码也可以登录成功。51Testing软件测试网)l;l.rT
NpQ'Q6l
这是因为当我们的密码为“' or '1'='1”时,SQL语句变为:
#hq1xLa;w0Select * FROM member Where username='magci' and password='' or '1'='1'
,Iv%EJ3Cn
O Rw0'1'='1'是永真的,这条SQL语句是能通过验证的。
y8x{ Q9Q{z0U?0这就是SQL注入攻击。
z/q^&qb A"z0
)k!O6Bd|0为了防止SQL注入攻击,可以使用PraparedStatement对象操作数据库。51Testing软件测试网$b:_ Sv(N
改进后的登录模块如下:
2xx:nKEQ5xr#wf051Testing软件测试网w2?+sk8Y+j$~T
附加功能:防止SQL注入攻击51Testing软件测试网 K7F&hR$ym2cL
!? @2U0q@1~ ?&~Og%X0登录模块至少需要以下几个页面:
W
o+Q6Y5k/{@;l01.检查Cookie页面(index.jsp);
*@vVkwqVso02.输入用户信息页面(login.jsp);
+Xkz5k(m7e7eW03.用户合法性验证页面(check.jsp);
P[wHeb04.登录成功欢迎页面(pass.jsp)(检查Session设置);51Testing软件测试网4R2Szb+N'Y
5.登录失败提示页面(failure.jsp);
7YGQm0XQQH06.注销登录页面(logout.jsp)。
*WC
A/|Y)p0
Q!i
~8s[x0数据库:member.mdb51Testing软件测试网3?^9Z i+r&tmM
51Testing软件测试网*y c7l"tv
51Testing软件测试网m@ju|q,o
结构图:51Testing软件测试网S[&~ g2V^`&p
51Testing软件测试网9o.p9_iY5~KDJS'm
---------------------------------------------------------------------51Testing软件测试网'|M)gW
e
`
QKC;r
k
L0 index.jsp51Testing软件测试网d%ir[;au&Hk/QV
|
Es8HJ8}5AS0 |判断Cookie中有无用户名、密码
,}BEe?(i0 ----------------------51Testing软件测试网$k#q}KJe
| Y N |51Testing软件测试网x'B0u-k9R2v5@ f
| V
Y1@3Wm4d X0 | login.jsp<--------------------51Testing软件测试网"xC/XM9e2nn
| |输入用户名、密码 |
!]4o-D`8xFpS0 | V |
Xx'\;@#P0 ---------------->check.jsp |
/KF7S
{2jLD0 |查询用户名、密码 |
6E6lD9oDD3m0 V |51Testing软件测试网'G|"Q,~-QKs``
member.mdb |
Co~&W3If7O8e0 |返回结果 |