发布网友
发布时间:2022-04-22 04:41
共1个回答
热心网友
时间:2022-04-07 19:32
sql注入,简单的说,是网站在执行sql语句的时候,使用的是拼接sql的方法执行sql语句的,所有的变量值都是从前台传过来,在执行时直接拼接的,举例,用户输入账号密码,后台查询user表,比对账号和密码是否正确。java中,定义要执行的sql如下:
String loginName=request.getParameter("name");
String passwd=request.getParameter("passwd");
String sql =" select id,name from user where login_name='"+loginName+"' and password='"+passwd+"';
然后调用执行sql的方法,这个时候,我们就可以从前台进行注入了,将loginName的值注入成
1' or '1'='1
这时我们在看sql语句,变成
select id,name from user where login_nane='1' or '1'='1' xxxxxxxx
这样的sql将返回user表所有数据,达到注入的目的。
总结,sql注入,主要利用代码中使用拼接sql语句的方式执行sql的漏洞,完全属于人为造成的后果,使用绑定变量的方式完全可以避免。