Karas鴉 發表於 2013-9-23 09:41:13

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 能夠防範到怎樣的程度,
所以,自己才再額外寫一個函數進行過濾。

grass0916 發表於 2013-9-23 12:51:50

如果今天 input 請輸入你指定的玩家名稱。

玩家叫做

SHINE -> 悲劇 "IN"

ORDER -> 悲劇"OR"

還有就是有些資料庫是允許小寫輸入。

結論 : 似乎不太妥當 {:soso_e150:}

IDUN-2 發表於 2013-9-23 13:36:42

grass0916 發表於 2013-9-23 12:51 PM static/image/common/back.gif
如果今天 input 請輸入你指定的玩家名稱。

玩家叫做


SEAR有大小寫轉換的函數

巴力 發表於 2013-9-23 13:43:33

總覺得有好有壞
不過只要讓玩家不要輸入資訊就可以不怕了
像是列表讓玩家填數字就好之類的

sinya 發表於 2013-9-23 14:36:48

本帖最後由 sinya 於 2013-9-23 02:37 PM 編輯

escape_sql就 100% 安全了 過瀘 只是讓玩家不方便而已

多此一舉ea開發者不會傻到設計出一個漏洞百出的指令

Karas鴉 發表於 2013-9-23 16:52:09

本帖最後由 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]
查看完整版本: SQL輸入內容過濾,保護資料庫的安全!!