


mysql防注入的sql語句寫法
經(jīng)常聽說sql注入式攻擊,其實(shí)不是mysql獨(dú)有的,所有的數(shù)據(jù)庫都存在注入式攻擊,包括mssql,oracle,db2等。
究竟是什么sql注入式攻擊呢?
其實(shí),它就是攻擊者通過構(gòu)建特殊的sql語句,進(jìn)行數(shù)據(jù)庫攻擊,實(shí)際就是獲取一些信息,或是修改一些數(shù)據(jù),以達(dá)到攻擊者目的。
防止攻擊除了我們上次說的php安全之?dāng)?shù)據(jù)過濾之外,當(dāng)然就是我們sql語句的寫法了。
比如一個(gè)登錄語句:
select * from user where username='$admin' and pwd='$admin'
通常我們都是這么寫的是吧!
若是登錄者提交過來的數(shù)據(jù)使我們的sql語句變成了以下形式:
select * from user where username='aa' #and pwd='$admin';
select * from user where username='aa' /*and pwd='$admin';
如果用戶名對(duì)了,那是不是也能實(shí)現(xiàn)登錄呢?
又如:select * from user where username='aa' or 0=0 /*and pwd='$admin';
就算用戶名不對(duì),也可以登錄了。
但如果我們將我們的語句改成:
select * from user where username='$admin' ;
然后從數(shù)據(jù)庫讀出的密碼同,用戶提交過來的密碼比對(duì),是否更加安全一點(diǎn)點(diǎn)呢?
再加上我們的過濾函數(shù)safestr()
function safestr()
{
$re = "/(|'%27|;|(%3d)|(|(%28)|)|(%29)|(/*)|(%2f%2a)|(%2a%2f)|+|(%2b)|(<|(%3e)|(%3e)|(--))|[|%5d)/";
if( preg_match( $re ,$username)
{
echo'請(qǐng)不要非法sql注入';
exit;
}
else
{
return turn;
}
這也安全也都只是相對(duì)安全些,如果相對(duì)安全些,那么我們定的程序就更容易攻破一些對(duì)吧!
關(guān)健詞:mysql
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解