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