VB老当益壮,就像IE,国外被抛弃,国内被当成宝

用3D看世界,让自动化更简单,请关注CAD2D3D,每日更新!

同事在用VB写程序,我很想嘲笑他,但我又忍住了,因为我也在用老掉牙的PHP开发网站。

现在做什么都讲求高大上,明明就是一条简单的机加工自动化生产线,因为 用到了工业机器人,摇身一变,就成了智能产线、智慧车间、数字化车间、黑洞工厂等。

最近接了一个机加工自动化项目,采用工业机器人实现机床自动上下料,顺带着还有一些信息化(SCADA)内容,比如需要LED显示屏显示实时产量、计划量、完成率等,然后我就发现同事在用VB6.0编写程序,由于我20年前也学过一段时间的VB,因此就乘机看了看同事写的源代码,其中有个用户登录界面,看完源代码之后,我有点惊呆了。

以下内容属于程序员范畴,机械工程师可以跳过了。

双击上图的 登录 按钮,会打开 按钮 对应的源代码,点击按钮后,程序会读取用户输入的用户名和密码,然后查询数据库里有没有对应的用户名和密码,数据库查询语句如下:

sql = "select * from Users where UserID='" & txtUserID & "' and Pwd='" & MD5(pwd, 16) & "'"

比如用户名是 CAD2D3D,密码是123456,把用户名和密码代入上面的SQL语句,最终的SQL语句如下:

select * from Users where UserID='CAD2D3D' and Pwd='123456'(密码部分省去了MD5加密)

执行上面的SQL语句之后,如果数据库中含有对应的用户名和密码,数据库就会返回一条记录,代表验证通过,如果没有,返回空记录,代表验证不通过。

这边的操作和我20年前的操作一模一样,这也是初学者最容易犯的错误,稍微懂点数据库的人,利用SQL注入法,就能轻松破解上面的验证过程,我只要用户名输入 'or 1=1 or',密码无所谓,就能轻松登录系统。

用户名输入 ' or 1=1 or ',最终的SQL语句如下:

select * from Users where UserID='' or 1=1 or '' and Pwd='123456'

由于1=1为true,前后又是 or 的关系,因此上面的SQL语句肯定会返回一条记录,此时成功破解登录系统。

避免SQL恶意注意的方法也很简单,就是SQL语句里不要一起查询用户名和面,正确的做法应该是根据用户名,把真实密码查找出来,然后比对用户输入的密码即可。

以上内容属于程序员范畴,机械工程师可以跳过了。

20年过去了,没想到现在还能看到VB代码,很熟悉的感觉,虽然早在2008年,微软就抛弃VB,但时至今日,VB在国内依然煜煜生辉、老当益壮。

提起VB,又想起了PHP,都是20年前红极一时的编程语言,VB我用的不多,我刚上大学没多久,VB.NET就出来了,由于学网页设计的关系,后来我主打PHP,毕业之后,就没有学习新的计算机语言,我十年前用PHP制作的网站,现在依然运行良好,计算机语言层出不穷,有时候也没必要追逐潮流,能满足需求才是最好的。

VB和PHP之所以还有市场,就是因为简单易学,而且有大量的老项目都是用他们编写的,只要能运行,没必要更换其他语言。美国波音747飞机还在使用软盘进行数据更新,做项目要的是成熟可靠的技术方案。

谈起老古董,让我又想起了IE浏览器,虽然也被微软抛弃了,但IE在国内的生命力十分顽强,很多网站强制你使用IE浏览器,你要是不用IE浏览器,他还会在页面顶部以红底白字的方式提醒你下载安装。

小时候,爸爸给人家修桶(塑料桶破了之后,用火加热把它粘上)换锅底(铝锅锅底很容易漏水,把锅底割掉,重新装一个新的锅底)赚钱,每天赚的不多,但能养活一家老小,那时候就在想,如果一直这样也挺好,可惜后来技术更新之后,不要修修补补了,爸爸的手艺也派不上用场了。有时候我在想,技术原地踏步也挺好,这样就不会有焦虑感。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章