程序员写 2000 行 if else?领导:这个锅我不背

109211-20190929084045770-1130899717.png

前言

知乎上有小伙伴提了这么一个问题,如何看待陕西省普通话水平测试成绩查询系统?查询系统前端代码就直接给出了身份账号,姓名,证书编号,如果信息是真的,就泄露了这么多考生的信息,白给那种。为什么会发生这样的事情?事情的始末是什么?

证据

很多机智的小伙伴都打开了网址一探究竟,小编也不敢怠慢赶紧瞅瞅这牛逼的网站到底长什么样子。

109211-20190929084100448-1389998248.png

看着的确有模有样,一股80年代的复古风格,赶紧拿出 F12 神器看一遍究竟哪位程序员写出如此神奇的逻辑代码。

109211-20190929084108262-1917648093.png

点开层层结构,找到 <script>,卧槽还有这等神逻辑,本地数据库,htmlsql

小编拷贝出来这段逻辑代码,足足有 2000 行代码,涉及多大几百个考生的身份证信息,为了安全期间,小编只好给马赛克了。

通过逻辑分析发现,这个系统查询本质上并不是用证件号 + 姓名 + 身份证号来查的,其实仅仅用姓名就足够了,你可以直接访问:

http://www.sxpth.cn/小明查询结果.htm

这不是重点,重点在后面,一段神器的代码:

else
{
  //如果输入的不是hello,那么跳转到百度。总之,你说不可以用asp也就是服务器脚本只能弄个客服端了
  location='查无此人.html';
}

看到这里,小伙伴们可能会以为这是哪个沙雕领导的要求?然而峰回路转的是,众网友居然找到了源代码的出处,居然是 2009 年一位网友在百度知道的回答,不得不说互联网真是个神奇的存在。

# 小伙伴们可以看这里
https://zhidao.baidu.com/question/119639957.html

难道这就是整个故事的结局,显然不是,回到问题开头,待陕西省普通话水平测试成绩查询系统 怎么说也应该是个正规的官方系统,顺手查了一下网站的备案信息。

109211-20190929084118316-1253392007.png

那么问题很明确了,这只是一个假网址http://sxpth.cn,仿冒的是这个真实的网址http://sx.cltt.org

不过假冒网站现在已经 Service Unavailable 了,不知道是访问量过大服务爆了,还是自行下线了。

网友热评

最后,我们欣赏一下各路吃瓜群众的精彩评论:

天然支持高并发

跨平台兼容性好,任意移植

我想知道这个项目多少钱中标的

真正的前后端分离,完全不需要后端

很前卫 这是Serverless无服务架构

不需要数据库,完全没有拖库的危险

刚才看了看他们网站,承包我这个月的笑点[允悲]

新潮流?微服务转无服务?我一个产品经理也能写![doge]

设计思想很有创意,适用于查考试成绩这种读多写少的高并发业务场景。

代码优化到了极致,亿级并发完全不是事,阿里就缺你这种人才[doge]

不足的一点是,没有采用js代码混淆,这么高明的解决方案就人尽皆知了

转载于:https://www.cnblogs.com/smallSevens/p/11605801.html

对于这个问题,我可以提供以下方案供您参考: 1. 审批方法实现 在前端传回数据时,先将数据存储在一个待审批的缓存表中,然后通知相关领导审批。如果审批通过,则将数据从缓存表中移动到正式的数据表中;如果审批不通过,则将数据从缓存表中删除。 以下是一个简单的审批方法实现的伪代码: ``` // 前端传回的数据 $data = array( 'field1' => 'value1', 'field2' => 'value2', // ... ); // 存储到待审批表中 $cacheTable = 'cache_table'; $db->insert($cacheTable, $data); // 通知相关领导审批 $approver = 'leader1@example.com'; $message = '请审批新的数据:' . print_r($data, true); mail($approver, '数据审批通知', $message); // 等待审批结果 while (true) { $status = $db->selectOne($cacheTable, 'status', array('id' => $newId)); if ($status == 'approved') { // 审批通过,将数据移动到正式表中 $realTable = 'real_table'; $db->insert($realTable, $data); $db->delete($cacheTable, array('id' => $newId)); break; } else if ($status == 'rejected') { // 审批不通过,删除数据 $db->delete($cacheTable, array('id' => $newId)); break; } else { // 等待下一次检查 sleep(1); } } ``` 2. 数据库表设计 为了实现审批功能,需要在原有的数据表基础上增加一个待审批的缓存表。具体的数据库表设计可以参考以下伪代码: ``` CREATE TABLE real_table ( id INT PRIMARY KEY AUTO_INCREMENT, field1 VARCHAR(255), field2 VARCHAR(255), -- ... ); CREATE TABLE cache_table ( id INT PRIMARY KEY AUTO_INCREMENT, status ENUM('pending', 'approved', 'rejected') NOT NULL DEFAULT 'pending', data TEXT NOT NULL ); ``` 其中,`real_table` 是正式的数据表,`cache_table` 是待审批的缓存表。`cache_table` 中的 `data` 字段存储的是序列化后的数据,可以使用 PHP 的 `serialize()` 函数和 `unserialize()` 函数进序列化和反序列化。`status` 字段表示数据的审批状态,包括 `pending`(等待审批)、`approved`(审批通过)和 `rejected`(审批不通过)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值