SQL輸入內容過濾,保護資料庫的安全!!
本帖最後由 Karas鴉 於 2013-9-23 05:45 PM 編輯往下看之前,可以先參考此篇。
用法:SQLInputCheck("字串")
說明:過濾輸入到SQL內的敏感詞,並跳脫字符。
測試環境:rA / SeArfunction script SQLInputCheck {
.@str$ = getarg(0);
setarray .@Char$,";","'","#","*","/","-","+","(",")","%",
"=",":","&","|","^",">","<","!","~","$","`";
for(.@i=0;.@i<getarraysize(.@Char$);.@i++){
.@str$ = replacestr(.@str$,.@Char$[.@i],"\\"+.@Char$[.@i],0);
}
return escape_sql(.@str$);
}主要整理了一些SQL常用的運算符,
不過其實可以不用寫這麼多...
主要的敏感詞替換掉其實就差不多了...
而escape_sql,也是SQL過濾輸入的函數,
他可以跳脫一些特殊字符,讓SQL的執行上更安全一些,
使用方法:escape_sql("字串")
因為不確定 escape_sql 能夠防範到怎樣的程度,
所以,自己才再額外寫一個函數進行過濾。 如果今天 input 請輸入你指定的玩家名稱。
玩家叫做
SHINE -> 悲劇 "IN"
ORDER -> 悲劇"OR"
還有就是有些資料庫是允許小寫輸入。
結論 : 似乎不太妥當 {:soso_e150:} grass0916 發表於 2013-9-23 12:51 PM static/image/common/back.gif
如果今天 input 請輸入你指定的玩家名稱。
玩家叫做
SEAR有大小寫轉換的函數
總覺得有好有壞
不過只要讓玩家不要輸入資訊就可以不怕了
像是列表讓玩家填數字就好之類的 本帖最後由 sinya 於 2013-9-23 02:37 PM 編輯
escape_sql就 100% 安全了 過瀘 只是讓玩家不方便而已
多此一舉ea開發者不會傻到設計出一個漏洞百出的指令
本帖最後由 Karas鴉 於 2013-9-23 05:23 PM 編輯
grass0916 發表於 2013-9-23 12:51 PM static/image/common/back.gif
如果今天 input 請輸入你指定的玩家名稱。
玩家叫做
#2
感謝提醒,玩家可能有敏感字這倒是沒有考慮到,
移除部分的敏感字符應該就沒問題了。
replacestr -> 已經設定無視大小寫囉
---------------------------------------------
改為單純跳脫特殊字符應該就ok了。
#5
原來如此,因為接觸這個不久,所以不清楚到底安全性如何,
比較常寫PHP,所以習慣這樣處理
頁:
[1]