OK論壇

 找回密碼
 註冊
查看: 1961|回復: 5

[函數] SQL輸入內容過濾,保護資料庫的安全!!

[複製鏈接]
  • TA的每日心情
    擦汗
    2015-10-1 03:50 PM
  • 簽到天數: 416 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2013-9-23 09:41:13 | 顯示全部樓層 |閱讀模式
    本帖最後由 Karas鴉 於 2013-9-23 05:45 PM 編輯

    往下看之前,可以先參考此篇

    用法:SQLInputCheck("字串")
    說明:過濾輸入到SQL內的敏感詞,並跳脫字符。
    測試環境:rA / SeAr
    1. function        script        SQLInputCheck        {
    2.         .@str$ = getarg(0);
    3.         setarray .@Char$[0],";","'","#","*","/","-","+","(",")","%",
    4.                         "=",":","&","|","^",">","<","!","~","$","`";

    5.         for(.@i=0;.@i<getarraysize(.@Char$);.@i++){
    6.                 .@str$ = replacestr(.@str$,.@Char$[.@i],"\"+.@Char$[.@i],0);
    7.         }
    8.         return escape_sql(.@str$);
    9. }
    複製代碼
    主要整理了一些SQL常用的運算符,
    不過其實可以不用寫這麼多...
    主要的敏感詞替換掉其實就差不多了...

    而escape_sql,也是SQL過濾輸入的函數,
    他可以跳脫一些特殊字符,讓SQL的執行上更安全一些,
    使用方法:escape_sql("字串")

    因為不確定 escape_sql 能夠防範到怎樣的程度,
    所以,自己才再額外寫一個函數進行過濾。
    回復

    使用道具 舉報

  • TA的每日心情

    2017-1-18 12:17 AM
  • 簽到天數: 512 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2013-9-23 12:51:50 | 顯示全部樓層
    如果今天 input 請輸入你指定的玩家名稱。

    玩家叫做

    SHINE -> 悲劇 "IN"

    ORDER -> 悲劇"OR"

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

    結論 : 似乎不太妥當 {:soso_e150:}
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2023-11-5 12:14 PM
  • 簽到天數: 2233 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2013-9-23 13:36:42 | 顯示全部樓層
    grass0916 發表於 2013-9-23 12:51 PM
    如果今天 input 請輸入你指定的玩家名稱。

    玩家叫做

    SEAR有大小寫轉換的函數
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2017-9-18 09:52 PM
  • 簽到天數: 771 天

    連續簽到: 2 天

    [LV.10]以壇為家III

    發表於 2013-9-23 13:43:33 | 顯示全部樓層
    總覺得有好有壞
    不過只要讓玩家不要輸入資訊就可以不怕了
    像是列表讓玩家填數字就好之類的
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2023-12-30 04:16 AM
  • 簽到天數: 1322 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2013-9-23 14:36:48 | 顯示全部樓層
    本帖最後由 sinya 於 2013-9-23 02:37 PM 編輯

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

    多此一舉  ea開發者不會傻到設計出一個漏洞百出的指令
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2015-10-1 03:50 PM
  • 簽到天數: 416 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2013-9-23 16:52:09 | 顯示全部樓層
    本帖最後由 Karas鴉 於 2013-9-23 05:23 PM 編輯
    grass0916 發表於 2013-9-23 12:51 PM
    如果今天 input 請輸入你指定的玩家名稱。

    玩家叫做

    #2
    感謝提醒,玩家可能有敏感字這倒是沒有考慮到,
    移除部分的敏感字符應該就沒問題了。
    replacestr -> 已經設定無視大小寫囉
    ---------------------------------------------
    改為單純跳脫特殊字符應該就ok了。
    #5
    原來如此,因為接觸這個不久,所以不清楚到底安全性如何,
    比較常寫PHP,所以習慣這樣處理
    回復 支持 反對

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 註冊

    本版積分規則

    Archiver|手機版|小黑屋|OK討論區

    GMT+8, 2024-4-24 05:56 PM , Processed in 0.045516 second(s), 19 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回復 返回頂部 返回列表