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/cn.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灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP