随梦书屋 通过搜索各大小说站为您自动抓取各类小说的最快更新供您阅读!

2001年9月广州

暑气还没褪尽,烈士陵园旁的红棉树缀着零星新叶。

我们从青岛时装周回来没几天,Eva就约我见面,说是有重要的事情。

在羊城晚报集团大楼一楼的咖啡厅,Eva穿米白色职业套装,手里攥着《中国时装》最新刊,封面上的刺绣旗袍在阳光下泛着柔光。

“刘军,集团要给杂志做网站了。”

她把杂志推到我面前,内页夹着张手写的需求清单.

“不只是放些文章,得能让客户在线下单,比如订杂志合订本、预约时装秀展位。但我们编辑部没人懂技术,想请你做技术顾问,全职驻场三个月,薪水按行业三倍算。”

我笑道:“现在还是网益公司的骨干员工,怎么可能全职驻场呢。我只能抽时间进行指导,可以利用周末时间先培训你们公司人员。”

Eva捂住嘴,说道:“是啊,我倒把这忘了。回去我跟领导汇报。”

我指尖敲了敲清单上“服务器搭建”几个字:“你们想要自建服务器还是托管?国内托管服务商里,万网的机柜稳定性不错,珠江新城那边还有电信的机房,延迟能控制在 50ms以内。”

Eva眼睛亮了亮,从包里掏出笔记本:“我们听技术的。但集团有要求,域名得含‘chinafashion’,还要备案——上周问过羊城晚报的技术部,他们说备案得找省通信管理局,可能要一个月。”

“域名注册我熟,中国频道现在能实时注册cn域名,先抢注‘chinafashion的下级cn域名’,再同步走备案流程。”

我拿过她的笔,在纸上画了个简单架构图。

“前端用 htmL+cSS,后端选 Ruby 1.6.7,这版本去年刚出,语法比 perl简洁,适合快速开发订单系统;数据库用 mySqL 3.23,轻量还免费,羊城晚报的新闻后台也在用这个。”

她立刻起身递来一份聘书:“这周末就开始吗?编辑部腾出了间小办公室,连 cRt显示器都给你备好了,17寸的三星,比我们编务用的还大。”

周六早晨 9:00

我推着装满工具盘的手推车进了会议室——里面有 windows 2000 Server安装盘、Apache 1.3.20的压缩包,还有打印好的《Ruby入门手册》。

Eva领着五个懂电脑操作的同事来听课,有负责内容的编辑,也有管发行的专员,每人面前摆着台装了 windows 98的台式机。

“先讲网站的‘骨架’。”

我把投影仪打开,屏幕上跳出架构图。

“大家看,用户在浏览器输域名,先通过 dNS解析到我们的服务器 Ip——这个 Ip是托管机房分配的固定地址,就像门牌号。然后 Apache服务器接收请求,把动态内容交给 Ruby处理,再从 mySqL里调数据,最后返回给用户。”

发行部的老张举了举手:“刘顾问,要是用户在新疆下单,会不会很慢?”

“问得好。”

我点开电信机房的网络拓扑图,“我们选的机房有双线带宽,新疆用户走联通线路,延迟能控制在 200ms以内,比拨号上网打开网页还快。不过要注意,图片不能太大,每张控制在 50Kb以下,不然拨号用户加载会超时。”

接下来教他们注册域名。

我打开中国频道的网页,演示输入“chinafashion国际顶级中文域名”,确认未被注册后,填了羊城晚报集团的营业执照信息:“这里的‘组织类型’要选‘事业单位’,备案时要和通信管理局的资料对得上。现在付款用银行转账,得等三个工作日才能生效,比国外的域名注册慢,但合规。”

编辑小李突然指着屏幕:“那我们的订单数据存在哪里?安全吗?”

“mySqL数据库会设两层密码,一层是服务器登录密码,一层是数据库用户密码。”

我打开 mySqL的命令行,输入“GRANt SELEct,INSERt oN orders to editor @ localhost IdENtIFIEd bY cwpc2001”,“像编辑只能查订单,不能改数据;只有 Eva和我有修改权限,密码里包含集团缩写和年份,不容易破解。”

几节课下来,同事们都记了厚厚的笔记。

老张还把 Apache的配置参数抄在工作证背面:“以后服务器出问题,我也好帮你搭把手。”

到了晚上,大家都回去了。

办公室只剩我和 Eva。

她把自己的电脑搬到我旁边,cRt显示器嗡嗡作响,屏幕上是 UltraEdit编辑器——2001年还没有 Ruby专用 IdE,只能用文本编辑器写代码。

“今天教你写订单提交模块。”

我新建了个“order.rb”文件,先写类定义:“Ruby是面向对象的,我们定义个 order类,包含客户姓名、订单金额这些属性。你看,‘attr_accessor :name,:amount’这行,就能自动生成 getter和 setter方法,不用像 Java那样写一堆函数。”

Eva跟着敲键盘,手指偶尔会按错键:“为什么这里要用‘ @name’而不是‘name’?”

“@开头的是实例变量,只有这个 order对象能访问。”

我指着屏幕,“比如你创建一个订单‘order1 = order.new’,order1的@name和 order2的@name是分开的,不会混在一起。”

接下来连数据库。

我打开 mysql-ruby 2.4.1的驱动包,教她写连接代码:“‘mysql.new (localhostadmincwpc2001chinafashion)’这行,依次是服务器地址、用户名、密码、数据库名。要记得加异常处理,不然数据库断连时,用户会看到一堆乱码。”

她试着写了段提交订单的代码,运行时却报错了。

我凑过去看,发现她把“INSERt INto orders (name, amount) VALUES (#{@name},#{@amount})”里的引号写错了——字符串变量要加单引号,数字不用。

“你看,要是客户姓名里有单引号,比如‘oNeil’,这段代码就会报错。”

我帮她改成参数化查询,“用‘prepare’方法,把变量当参数传进去,就能避免这个问题,还能防 SqL注入——以后写代码都要这么写。”

半个月后,Eva能独立写用户注册、订单查询的模块了。

有天晚上,她运行代码成功调出最新订单时,兴奋地拍了下桌子:“原来 Ruby这么简单!比我大学学的 c语言好懂多了。”

我看着她屏幕上整齐的代码,突然觉得这几个月的周末,比做任何技术项目都有意义。

某个周末天河航空商务酒店,

我和 Eva刚吃完广式晚茶,就把笔记本电脑接到房间的拨号网络上。

她点开“中国时装网”的订单页面,屏幕却跳出乱码,夹杂着“oR 1=1--”的字符。

“怎么回事?”

Eva的声音有点慌。

我立刻远程登录服务器,打开 Apache的 access.log——里面全是异常请求,比如“\/order.php?id=1 oR 1=1--”。

“是 SqL注入。”

我快速切换到 mySqL命令行,输入“SELEct * FRom orders whERE id =1 oR 1=1--”,果然查出了所有订单数据。

“攻击者用拼接 SqL语句的方式,绕开了登录验证。还好我们之前教你的参数化查询,大部分模块都防住了,只有老编辑写的查询页面没改。”

我先把有漏洞的页面下架,换成静态提示页,然后用 traceroute命令追踪攻击 Ip。

“你看,这个 Ip是 202.96.128.*,属于广州的电信网段——再查 whoIS,是‘南方时装传媒’的,他们上个月刚做了类似的订单网站。”

Eva攥紧了拳头:“他们怎么能这么做?”

我没说话,打开屏幕录像,把 access.log里的攻击记录、Ip追踪过程一一录下来,又导出数据库里的注入日志,压缩后加密:“这些都是证据,得交给国家安全部门——2001年《计算机信息网络国际联网安全保护管理办法》里明确说了,破坏计算机信息系统是违法的。”

我拨通了省公安厅网安总队的电话,说明情况后,他们让我们第二天去提交证据。

挂了电话,Eva靠在椅背上,眼神有点疲惫:“以后网站还会被攻击吗?”

我把她的笔记本拿过来,帮她更新了 Ruby的安全补丁:“放心,我会把所有模块都改成参数化查询,再装个入侵检测系统,有异常请求会实时报警。”

那晚我调试到凌晨三点,Eva在旁边帮我泡了杯速溶咖啡。

窗外的天河路灯火通明.

我看着屏幕上“订单系统恢复正常”的提示,突然意识到,这个网站不只是代码和数据,更是 Eva和同事们的心血.

我必须守住它。

周一

提交证据后,网安部门很快介入调查,南方时装传媒的技术负责人被约谈,攻击行为也停了。

但 Eva偶尔还是会盯着订单系统的后台日志发呆,问我:“要是他们换个 Ip再来怎么办?”

我帮她在服务器上部署了防火墙,只开放 80端口和 mySqL端口,还把日志同步到羊城晚报集团的备份服务器:“以后每周我都来检查一次安全漏洞,你要是看到异常,随时给我打电话——不管几点。”

那天,Eva把我送下楼,手里拿着本签了名的《中国时装》:“网站现在每天有两百多个订单,都是你的功劳。”

我接过杂志,看到扉页上写着“致刘军:最靠谱的技术守护者”。

走到红棉树下,我回头看了眼她的身影——阳光洒在她的发梢,像那天第一次见面时一样。

只是我心里多了份牵挂:Eva以后会不会遇到更多技术麻烦?那些竞争对手会不会用更隐蔽的手段攻击网站?

我想,只要她需要,我随时都会回来,做她的技术后盾。

就像守护那个用 Ruby写出来的订单系统一样,坚定而执着。

随梦书屋推荐阅读:豪婿韩三千我在霸总文里直播普法重生八零甜蜜军婚镇国战神叶君临李子染特战医王80年代剽悍土着女从996到古代文娱策划大师我家有绝世女战神商界大佬想追我战神归来叶君临最强狂兵陈六何沈轻舞追美高手大戏骨霸天龙帝[红楼+倩女幽魂]目标!探花郎离婚后前妻成债主第二季重生之农女当自强我的绝色总裁未婚妻(又名:神级龙卫)重生之芬芳人生红楼之魔门妖女回到过去当富翁都市之罗小黑传奇罪鬼之证重生八零,团宠娇娇医手遮天目标!探花郎重生七零奋斗媳龙婿陆凡小说免费阅读重生88,从大山挖参开始!我智商开挂,戏耍灭世Ai帝王病弱将军的团宠田妻飒爆了最强狂兵陈6合重启2008:从拯救绝色女老师开始逆袭重生八零之家有小悍妻神级大药师我一生行善,竟觉醒万魂幡!权欲场乔梁黑小子的风流轶事日常系美剧小太妃的马甲快掉啦通灵诡事胡灵祁越我卖廉价药救人,你们告我上法庭将门毒医大小姐猎人:我真不是除念师全职修神重生之沸腾青春重生逆袭灿烂人生太子妃必须骄养港片:我是大哥大都市巅峰战神护花狂尸
随梦书屋搜藏榜:带着包子去捉鬼从陵墓中苏醒的强者大小姐偷偷给我生个娃独宠名门前妻女配升级攻略:医蛊王妃农家丑妻宋不凡的超级系统怕什么,我有无敌空间洛少霸道:娇妻哪里逃被渣后她嫁给了九千岁兵之王者契约农妃的马甲又被扒了什么流量艺人,我是实力派山村野花开神说你要对女人负责极品龙婿终极一班:重生成雷克斯重生之丁二狗的别样生活异界之学徒巫妖和步行骑士过气歌手出走半生,归来仍是巨星万古长空一朝风月重生之人渣反派自救系统穿越之幽灵间谍高山果园炼狱孤行者转生成兽娘被神收编了陌上花开我要当影后保护校花半世浮生半世殇重生八零我每天靠败家躺赢敢霸凌我妹妹:那就杀个痛快!闹婚之宠妻如命极品警察穿越之黎明的秦重生之低调富翁他似春火燎原娱乐:表白失败后,拒绝当舔狗!小青梅她有点难追转职人皇,技能变态点很合理吧穿成癌症老头,还好我有遗愿清单前妻好可口:首席,别闹男神娇宠之医妻通灵民国,我在淞沪打造特战旅弃妃无双[综+剑三]明眸善媚都市妖孽狂兵灵启都市纪元:佣兵的平凡幻变灵气复苏:我走向无敌路他今夜又来撒野了这只皇帝会读心
随梦书屋最新小说:被迫转业后,我搜刮了全球资源高武剑道:地球天才称霸全宇宙东北往事之富贵在天五八那年雁归巢盗墓:露出麒麟纹身后,蜜热麻了分手后,我的桃花泛滥了!游走神话,我贯穿各大神系都市吞天武圣魔修归来,宠妹狂魔一山,一观,一小道最爱的人是凶手官场冷暖生死与共:荒岛求生实录让你去扶贫,没让你走向权利巅峰我从底层逆袭变最强这座城市害虫太多,我全杀神豪:为美女花钱,存款直接翻倍让你考公进体制,你被国安带走了重生1975:深山猎户我为妹妹卷成韩娱圈最强神话天才制作人:顶流皆为陪跑重生三七,大兴安岭赶山杀鬼子故宫修复师:开局拆了景山镇物蓝星唯一修士暴打太平洋警察JOJO的奇妙冒险:替身时代我在工厂开挂的日子赤焱巨兽六道轮回博物馆末世归来的第一剑仙穿越之幽灵间谍全民转职,铠甲铸造师瞒不住了女总裁的专属特工:极简裁决灵气复苏:说好的一起证道呢?我的鱼缸是片上古龙渊华娱:从03年开始的导演之王神豪环球旅行,从瑞士女友开始抗联烽火少年行九龙鸿蒙鼎从流浪狗到末世狗王郑琦的混沌人生时空错位1938人生何处是归途:花城网事三十年华娱:我在娱乐圈修仙道爷我啊,可不好惹!诡道之至尊天下双子星劫退休神明在都市种田,被当成隐藏都市玩火,从出租司机到商业巨鳄开局:拿下校花,过享福人生小隐仙