PHP 板


LINE

看板 PHP  RSS
大家好,小弟是一個業餘的PHP工程師,目前在開發公司內部的一些小工具。 其中有一個功能是讓使用者輸入一段SQL,並記錄在資料庫當中。讀取的時候PHP會執行 SQL並產生web表格。之後要調閱這張報表的時候就不用丟資料庫。也比較好和非程式人 員分享。 例如一張被儲存起來的員工年資報表 SELECT name ,years FROM employees 想請問的問題是,我要怎麼用php檢查我從表單上收到的SQL是可執行的呢? (可執行/不可執行就return TRUE/FALSE) 有沒有比較嚴謹或正規的做法? (如果是直接把SQL拿去執行,系統會直接報錯) 感謝前輩們不吝指導。 PS. 我是用LAMP+CI開發 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.130.222.151
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1422223022.A.83C.html ※ 編輯: Thitta (220.130.222.151), 01/26/2015 05:58:52 ※ 編輯: Thitta (220.130.222.151), 01/26/2015 06:01:51 ※ 編輯: Thitta (220.130.222.151), 01/26/2015 06:04:23 ※ 編輯: Thitta (220.130.222.151), 01/26/2015 06:06:41 ※ 編輯: Thitta (220.130.222.151), 01/26/2015 06:09:50
1F:推 GALINE: 一個可能的作法是,執行 "EXPLAIN {$sql}",看會不會噴錯 01/26 09:57
2F:→ GALINE: 然後直接讓使用者對 DB 下 SQL ,在某些公司會被砍頭的... 01/26 09:58
3F:→ GALINE: 想一下如果有人下「DROP employees」會怎樣[汗] 01/26 09:59
4F:推 rockmanalpha: 不太懂你的意思 你是怕表格傳過來的SQL太危險? 01/26 09:59
5F:→ GALINE: 之前看過的作法是,把需要做報表的資料 dump 到獨立的 DB 01/26 09:59
6F:→ rockmanalpha: 如果是這樣 你可以在MYSQL開一個用戶 對某個DB只有 01/26 09:59
7F:→ GALINE: 然後那個 DB 讓使用者亂玩,而且這樣也可以控制敏感資料 01/26 10:00
8F:→ rockmanalpha: SELECT的權限 然後那個PHP連接MYSQL時就用這個用戶 01/26 10:00
9F:→ GALINE: 不要讓 user 取得 01/26 10:00
10F:→ rockmanalpha: 至於結果是否錯誤 那是可以從return得知 01/26 10:00
11F:→ GALINE: 用帳戶控制也是一種作法...不過 user 下的 SQL 不會太好看 01/26 10:01
12F:→ GALINE: 如果卡 DB 就麻煩了 01/26 10:01
13F:→ rockmanalpha: G大不好意思 插樓了 01/26 10:02
14F:→ GALINE: 之前看過更花俏的搞法是,Excel 連 MS SQL Server 01/26 10:02
15F:→ GALINE: 然後就可以用 VB 下 SQL 然後搞些樞紐分析表什麼的... 01/26 10:02
16F:推 onininon: http://goo.gl/tjhWW5 01/26 10:11
17F:推 LaPass: 我問一下,誰可以輸入sql? 這聽起來很危險.... 01/26 11:07
18F:→ carylorrk: 內部工具可以輸入 SQL 很正常啦...重點是控管好權限。 01/26 18:41
19F:→ carylorrk: 像是 ERP 裏自定表格或是 phpmyadmin 這類的都有啊 01/26 18:42
20F:→ carylorrk: 語法上的正確性可以用 parser,能否正確執行就上面所述 01/26 18:49
21F:→ carylorrk: 如果是安全性考量就根本不該讓人直接執行 SQL。 01/26 18:50
22F:→ TobyH4cker: 原PO想問的是執行之後有沒有錯誤的話,query完return 01/26 19:18
23F:→ TobyH4cker: 如果是false就是失敗了 01/26 19:19
24F:→ TobyH4cker: 然後你只要handle這個錯誤然後回報有錯誤就可以了 01/26 19:20
25F:→ TobyH4cker: 小弟是新手,以上方法可能不是嚴謹做法 01/26 19:21
26F:推 GALINE: phpmyadmin是方便管機器的人,不是方便使用者的 XD 01/26 23:33
27F:→ GALINE: ERP 的例子有看過,不過個人覺得那不是什麼好習慣.. 01/26 23:34
28F:→ GALINE: 不過考慮到需求單位可以直接處理資料,有時候還是要開門.. 01/26 23:35
29F:→ GALINE: 只是開門之後怎麼樣不會出大包就是另一個問題。例如今天 01/26 23:36
30F:→ GALINE: 有人對某個MyISAM的大TABLE下沒有index的查詢,馬上有感 01/26 23:38
31F:→ xdraculax: 能輸入SQL的都是有權限的工程師吧,是否正確他們自己 01/27 03:16
32F:→ xdraculax: 負責就好啦,執行有出錯的話就直接把錯誤秀在UI上 01/27 03:17







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP