C_and_CPP 板


LINE

大家好 我在阅读Beej's Guide中文译本时,不太能理解下列这段文字: (http://beej-zhtw.netdpi.net/08-FAQ) 以下是我有疑问的一段内文 (疑问处使用绿色标记) ---------------------------------------------------------------- Q:我该怎麽写一个 server,可以接受来自 client 的 shell 指令并执行指令呢? client 的处理过程是: 1. 用 connect() 连线到 server 2. send("/sbin/ls > /tmp/client.out") 3. 用 close() 关闭连线 此时,server 正在处理资料并执行指令: 1. accept() client 的连线 2. 使用 recv(str) 接收命令字串 3. 用 close() 关闭连线 4. 用 system(str) 执行指令 注意!server 会执行全部 client 所送的指令,就像是提供了远端的 shell 存取权限,人 们可以连线到你的 server 并用你的帐号做点事情。例如:若 client 送出 "rm -rf ~" 会怎麽样呢?这会删掉你帐号里的全部资料,就是这样! 所以你学聪明了,你会避免 client 使用任何危险的工具,比如 foobar 工具: if (!strncmp(str, "foobar", 6)) { sprintf(sysstr, "%s > /tmp/server.out", str); system(sysstr); } 可是这样还是不安全,没错:如果 client 输入 "foobar; rm -rf ~" 呢? 最安全的方式是写一个小机制,将命令参数中的非字母数字字元前面放个['\']字元[如 果适合的话,要包括空白]。 如你所见,当 server 开始执行 client 送来的东西时,安全性(security)是个问题。 ---------------------------------------------------------------- 我的疑问如下: 1. 请问加了strncmp那个判断式後,按照程式逻辑 假如client要请server执行"ls > file1.txt" 必须要使用"foobar ls > file1.txt"才可以吗? 请问为什麽要这样做呢? 2. 请问"最安全的方式是写一个小机制"那一个方式是什麽意思呢? 目前我的程度对於程式安全还没有什麽概念...上面这段读了几次还是无法看懂QQ 谢谢大家 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.135.146.248
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1497416196.A.354.html ※ 编辑: sirusi (60.135.146.248), 06/14/2017 12:57:42
1F:→ pili100: 我是不知道foobar是什麽 06/14 13:51
2F:→ pili100: 简单说,指令不用明码传送 06/14 13:51
3F:→ x000032001: 大致上是个wrapper 类似 https://url.fit/ZZRBN 06/14 14:45
4F:→ x000032001: 查查command injection就蛮多资讯了 06/14 14:50
5F:推 hn12404988: 投wrapper一票 06/14 19:25
6F:→ jackace: 只要有一个概念就行了 : DON'T DO THIS 06/14 20:17
7F:推 longlongint: 一般做法 只开固定功能 参数只给填纯数值 06/14 23:03
8F:→ longlongint: 让人填指令的做法真的很北七 06/14 23:03
9F:推 Neisseria: 让人填指令感觉就是自已开洞给别人进来 06/15 07:41
10F:→ sirusi: 非常谢谢各位大大提供的方向! 06/15 10:05
11F:推 alex70266: 最简单的想法就是client side丢过来的东西一定要验证 06/16 22:48
12F:→ alex70266: 因为不能设想request参数都是安全的 06/16 22:50
13F:推 pttuser: 填指令当然没问题,有问题的是安全性,加上sandbox吧 06/17 23:33
14F:→ Killercat: 其实我不太懂 安全性的东西不是server要负责的吗? 06/18 14:45
15F:→ Killercat: SELinux就是这种思维下的产物 怎麽会跑去要client负责 06/18 14:45
16F:→ Killercat: 一个operation「安不安全」的定义 怎样都不是client管 06/18 14:45
17F:→ Killercat: 今天client就算定一堆定义 别人sniffer你 一样可以绕过 06/18 14:46
18F:→ Killercat: client的规范,这完全不是一个安全的系统该有的做法 06/18 14:46







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

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

TOP