⑴ 通過加密解密數據可以防止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協議就可以。然後你可以不斷的用循環去嘗試密碼所有位數內的所有可能的密碼,驗證碼的話有可以解析驗證碼圖片的工具,可以知道是什麼數字;
然後就不斷提交直到猜到為止