第57章 订单系统风波(1 / 1)

推荐阅读:

2001年9月广州

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

“问得好。”

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

接下来教他们注册域名。

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

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

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

我打开 ysql的命令行,输入“grant select,sert on orders to editor localhost identified by cwpc2001”,“像编辑只能查订单,不能改数据;只有 eva和我有修改权限,密码里包含集团缩写和年份,不容易破解。

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

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

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

办公室只剩我和 eva。

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

“今天教你写订单提交模块。””文件,先写类定义:“ruby是面向对象的,我们定义个 order类,包含客户姓名、订单金额这些属性。这行,就能自动生成 getter和 setter方法,不用像 java那样写一堆函数。”

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

接下来连数据库。。要记得加异常处理,不然数据库断连时,用户会看到一堆乱码。”

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

我凑过去看,发现她把“sert to orders (na, aount) vaes ({na},{aount})”里的引号写错了——字符串变量要加单引号,数字不用。

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

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

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

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

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

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

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

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

“怎么回事?”

eva的声音有点慌。”。

“是 sql注入。”

我快速切换到 ysql命令行,输入“select fro orders where id =1 or 1=1--”,果然查出了所有订单数据。

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

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

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

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

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

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

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

窗外的天河路灯火通明

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

我必须守住它。

周一

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

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

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

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

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

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

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

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

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

章节报错(免登录)
最新小说: 坠落山崖,却意外获得了修仙传承 直播算命:开局送走榜一大哥 砚知山河意 闻医生,太太早签好离婚协议了 美貌单出是死局,可我还是神豪 矢车菊,我和她遗忘的笔记 我的关注即死亡,国家让我不要停 宠婚入骨:总裁撩妻别太坏 重逢后,禁欲老板失控诱她缠吻 总裁的失宠新娘