PHP開發(fā)中有效防御SQL注入攻擊有哪些好方法?
網(wǎng)友解答: 方法有很多,網(wǎng)上的參考例子也比較多,建議從以下幾個方面進行:一、使用好的php框架例如目前流行的thinkphp等框架等,已經(jīng)考慮了這些方面問題,直接應用肯定會比自己寫的代碼
方法有很多,網(wǎng)上的參考例子也比較多,建議從以下幾個方面進行:
一、使用好的php框架
例如目前流行的thinkphp等框架等,已經(jīng)考慮了這些方面問題,直接應用肯定會比自己寫的代碼防注入性要強一些,畢竟每個人的水平參差不齊,總有遺漏的地方。
二、每個頁面對輸入的值進行過濾和校驗
這個工作量會比較大,就是驗證一下輸入的值是否符合要求,比如一個數(shù)字參數(shù),傳了一些古怪字符進來,都是要過濾的。php里面也有參數(shù)設置對get,post值進行處理,去掉分隔符等。
三、服務器托管
最好選擇如騰訊云,阿里云這些服務器,相對比自己去其他小機房托管,本身就可以幫阻止一些不必要的攻擊了。
四、服務器運行權(quán)限
這里有2個地方:
1、設置使用非root用戶來運行你的php,防止php擁有太多的執(zhí)行服務器指令的機會。
2、對于php中,能夠上傳文件的php程序,以及上傳的文件,要進行專門驗證,不要讓別人有利用這個入口上傳木馬后臺程序的機會。
五、掃描工具
上傳程序到服務器以后,可以用例如360的漏洞掃描工具,掃描一下網(wǎng)站,看看有沒有明顯的漏洞。
希望以上思路可以對大家有所參考和幫助!
-------------------------------------------
本人從事信息系統(tǒng)、互聯(lián)網(wǎng)、各種應用架構(gòu)設計開發(fā)20年,目前專注于股票期貨程序化交易,AI機器學習領域,歡迎交流。
網(wǎng)友解答:這個問題感覺對一個多年開發(fā)人員來說應該還是比較有資格回答的,畢竟錄制過sql注入以及防御的課程。
搞明白sql注入
注入攻擊漏洞例如SQL,OS以及LDAP注入。這些攻擊發(fā)生在當不可信的數(shù)據(jù)作為命令或者查詢語句的一部分,被發(fā)送給解釋器的時候。攻擊者發(fā)送的惡意數(shù)據(jù)可以欺騙解釋器,以執(zhí)行計劃外的命令或者在未被恰當授權(quán)時訪問數(shù)據(jù)。
然后給大家看看經(jīng)常會引起sql注入的sql語句
1'or 1=1 #
2'or 1=1 --(空格)
3union all select 1,2,3 #
4username=‘ UNION SELECT 1,version(),3 #(版本)
5username=‘ UNION SELECT 1,user(),3 #(用戶)
然后再給大家介紹一下sql注入的一個工具是sqlmap
最后給大家兩點建議
1 使用預處理語句PDO
2 對參數(shù)進行轉(zhuǎn)義(addslashes/mysql_real_escape_string)
當然了大家如果想具體學習sql的攻擊原理以及,sql的防御。和sqlmap的使用可以私聊我哦