⑴ 通过加密解密数据可以防止sql注入吗
不是这样的吧,能够被sql注入是因为程序员编写代码的问题,未作相关的约束等造成的,通过加密解密数据只能是在传输的过程中防止信息的泄露、篡改等问题。
⑵ php做的网站,留言板块mysql数据库被注入,已经有验证码了,但是还是被注入,请问该怎么办
字符串型数据(比如姓名、联系方式)用addslashes函数来过滤,数字类型数据用intval来过滤
比如你要提交的表单姓名为name,联系方式为tel,邮箱为mail,留言为msg。举例代码如下:
<?php
$name=isset($_REQUEST['name'])?addslashes($_REQUEST['name']):'匿名';
$tel=isset($_REQUEST['tel'])?addslashes($_REQUEST['tel']):'匿名';
$mail=isset($_REQUEST['mail'])?addslashes($_REQUEST['mail']):'匿名';
$msg=isset($_REQUEST['msg'])?addslashes($_REQUEST['msg']):'匿名';
?>
然后你再把这四个变量拼接到sql字串里面就不会被注入了
⑶ 绕过login登陆到网站后台
是'or'='or' 不是双引号
一般网站登陆用的sql语句
sql="select * from user where username='"&username&"'and pass='"& pass&'"
代入:
sql="select * from user where username=''or'='or''and pass=''or'='or''"
(注意,or前面和=后面都不是
双引号,而是两个单引号,查询语句里面没有双引号,双引号只是让里面的变量变成字符而已,
我们查询的时候双引号中的变量就被我们提交的数据所代替),好了,现在整句话的意思是:从数
据库的user表中查找的用户名是空(两个单引号之间没东西当然是空了:))或者空等于空。废
话,因为空当然等于空了,所以程序就认为你提交的数据是合法的,于是就放你通过拉and后面
的密码验证都不要了。
⑷ ASP英文单词防SQL注入问题,请教各位
用replace函数和trim
具体代码如下
<%@language=vbscript codepage=936 %>
<!--#include file="Conn.asp"-->
<!--#include file="../Inc/Config.asp"-->
<!--#include file="inc/md5.asp"-->
<%
dim sql,rs
dim username,password,CheckCode
username=replace(trim(request("username")),"'","")
password=replace(trim(Request("password")),"'","")
CheckCode=replace(trim(Request("CheckCode")),"'","")
if UserName="" then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>用户名不能为空!</li>"
end if
if Password="" then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>密码不能为空!</li>"
end if
if CheckCode="" then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>验证码不能为空!</li>"
end if
if session("CheckCode")="" then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>你登录时间过长,请重新返回登录页面进行登录。</li>"
end if
if CheckCode<>CStr(session("CheckCode")) then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>您输入的确认码和系统产生的不一致,请重新输入。</li>"
end if
if FoundErr<>True then
password=md5(password)
set rs=server.createobject("adodb.recordset")
sql="select * from Admin where password='"&password&"' and username='"&username&"'"
rs.open sql,conn,1,3
if rs.bof and rs.eof then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>用户名或密码错误!!!</li>"
else
if password<>rs("password") then
FoundErr=True
ErrMsg=ErrMsg & "<br><li>用户名或密码错误!!!</li>"
else
RndPassword=GetRndPassword(16)
rs("LastLoginIP")=Request.ServerVariables("REMOTE_ADDR")
rs("LastLoginTime")=now()
rs("LoginTimes")=rs("LoginTimes")+1
rs("RndPassword")=RndPassword
rs.update
session.Timeout=SessionTimeout
session("AdminName")=rs("username")
session("AdminPassword")=rs("Password")
session("RndPassword")=RndPassword
rs.close
set rs=nothing
call CloseConn()
Response.Redirect "default.asp"
end if
end if
rs.close
set rs=nothing
end if
if FoundErr=True then
call WriteErrMsg()
end if
call CloseConn()
'****************************************************
'过程名:WriteErrMsg
'作 用:显示错误提示信息
'参 数:无
'****************************************************
sub WriteErrMsg()
dim strErr
strErr=strErr & "<html><head><title>错误信息</title><meta http-equiv='Content-Type' content='text/html; charset=gb2312'>" & vbcrlf
strErr=strErr & "<link href='style.css' rel='stylesheet' type='text/css'></head><body>" & vbcrlf
strErr=strErr & "<table cellpadding=2 cellspacing=1 border=0 width=400 class='border' align=center>" & vbcrlf
strErr=strErr & " <tr align='center'><td height='22' class='title'><strong>错误信息</strong></td></tr>" & vbcrlf
strErr=strErr & " <tr><td height='100' class='tdbg' valign='top'><b>产生错误的可能原因:</b><br>" & errmsg &"</td></tr>" & vbcrlf
strErr=strErr & " <tr align='center'><td class='tdbg'><a href='Login.asp'><< 返回登录页面</a></td></tr>" & vbcrlf
strErr=strErr & "</table>" & vbcrlf
strErr=strErr & "</body></html>" & vbcrlf
response.write strErr
end sub
Function GetRndPassword(PasswordLen)
Dim Ran,i,strPassword
strPassword=""
For i=1 To PasswordLen
Randomize
Ran = CInt(Rnd * 2)
Randomize
If Ran = 0 Then
Ran = CInt(Rnd * 25) + 97
strPassword =strPassword & UCase(Chr(Ran))
ElseIf Ran = 1 Then
Ran = CInt(Rnd * 9)
strPassword = strPassword & Ran
ElseIf Ran = 2 Then
Ran = CInt(Rnd * 25) + 97
strPassword =strPassword & Chr(Ran)
End If
Next
GetRndPassword=strPassword
End Function
%>
⑸ ASP源代码如何防止SQL注入啊,另外如何加密啊
1.最好是使用存储过程来操作数据库,而不要直接在程序中构造SQL语句;
2.在表单提交前进行表单验证.移除可疑字符;
3.使用验证码,增加表单提交的繁杂成度;
⑹ sql注入的时候,’or’=’or’和’or’’=’在使用条件上有什么区别么
当然不用用Or啦~ Or就是两个条件满足其中一个条件即可。假如用户名或者密码其中有一个输入正确了,就可以成功登录。 用and的话,要用户名和密码两个都输入正确才可以登录成功。
⑺ thinkphp 从数据库验证用户名和密码的代码,能防止sql注入,,,一般咋么写的啊高分,
能,不要直接写sql.程序写的复杂一点
这是LoginAction.class.php文件
<?php
Class LoginAction extends Action{
Public function index(){
$this->display();
}
Public function login(){
if (!IS_POST) halt('页面不存在');
if(I('code','','md5') != session('verify')){
$this->error('验证码错误');
}
$username = I('username');
$pwd = I('password','','md5');
$user = M('user')->where(array('username' => $username))->find();
if(!$user || $user['password'] != $pwd){
$this->error('账号或密码错误');
}
if($user['lock'] ) $this->error('用户被锁定');
$data = array(
'id' => $user['id'],
'logintime' => time(),
'loginip' => get_client_ip(),
);
M('user')->save($data);
session(C('USER_AUTH_KEY'),$user['id']);
session('username',$user['username']);
session('logintime',date('Y-m-d H:i:s',$user['logintime']));
session('loginip',$user['loginip']);
if($user['username'] == C('RBAC_SUPERADMIN')){
session(C('ADMIN_AUTH_KEY'), true);
}
import('ORG.Util.RBAC');
RBAC::saveAccessList();
$this->redirect('Admin/Index/index');
}
Public function verify(){
ob_clean();
import('ORG.Util.Image');
Image::buildImageVerify();
}
}
?>
⑻ 用SQL入侵能查询教务处网站的成绩么,请高手指点下啊
sql入侵的话,好像可以利用sql注入获取管理员权限。要看网站有没有注入漏洞了。找找sql注入方面的资料吧,或许有帮助。单纯的用sql去查询是不行的,你根本没有数据库的访问权限。
⑼ 登录验证防除了SQL注入,还有什么
验证码算不算……
⑽ 我是初学者black网站除了使用sql注入还能怎么获得帐号密码。
可以用代码向对方提交http请求,只要符合http协议就可以。然后你可以不断的用循环去尝试密码所有位数内的所有可能的密码,验证码的话有可以解析验证码图片的工具,可以知道是什么数字;
然后就不断提交直到猜到为止