加强网站安全、重构公司的门户网站项目(C# VS2003)

news/2024/5/9 21:12:13/文章来源:https://blog.csdn.net/weixin_33774308/article/details/91674606

为什么80%的码农都做不了架构师?>>>   hot3.png

  请大家不要非觉得在炫耀什么的心态来看文章,那就扭曲了本文章的出发点,就算我骄傲了一下,又能怎么样,若人人像我这样骄傲一下,我们的软件开发水平说不定几年就彻底超越日本、印度了,美国可能还难超越一些,这是事实,不要总是看不惯人家骄傲,我不写,谁知道?鬼知道?允许每个人发文章是博客园给予我们的权利。

 

  本文想提醒: 为什么我们的劳动不值钱?

                    程序该干啥的,就应该干啥,不要乱来。

                    架构系统,需要严谨的思想,不要眼高手低,在我们的日常工作里,需要体现出我们的水平。

                    劳动成果要好好维护、不断重构、不断改进。

                    需要有一定的能力、境界、高度,才能让某个项目、产品能有质的变化。

                    我们天天学技术,是为了把软件做得更好,不是为了学而学,需要把学来的,体现在实际项目上。

                    理想与现实往往有很多差距,其实很多不足就在我们的眼前,可能我们自己没发现。

                    我们做项目,写程序时,需要思路严谨思路严谨再严谨,否则很容易是在制造电子垃圾

 

  最近客户反馈,门户网站有安全检查要求,必须要达到某些安全检查要求,而且是今天电话打过来2天就需要更新上线,任务也很紧急,这也是我们大客户之一的要求,没办法,只能硬着头皮就上。
  我刚来公司没多久,对公司的很多项目也不熟悉,由于这个项目是VS2003开发环境下开发的项目,我把这个任务交给了我们新来的一个同事。
  新来的同事也刚来公司1个月左右,也是对公司的项目不太熟悉,交接过来没多久,整个工程有上百个页面,起先是想升级到VS2008,他给我的答复是,由于这个项目工期紧张,无法再短时间内升级到VS2008上,可能会引起很多麻烦,这个提议我也能理解了,毕竟时间比较紧急。
  客户检测出来的主要问题,还是有SQL注入攻击的漏洞,虽然有些环节上也进行了处理,但是总感觉处理得不是很圆满,总有些让人放心不下。
  其他安全因素先不考试,我想SQL注入问题的本质,还是在数据库访问层,数据库访问层牢靠了,这个问题就相对好解决了。
  通过分析数据库访问层,我差点儿晕倒了,简直是让人头大啊,可以明显看出这个项目前后有5个接手换手,同一个项目,有接近5种数据库访问方法,更郁闷的是,什么数据库访问方式都用上了。
  A: 有微软的数据库访问层。(这个我想干得不错,毕竟是要相信这个是可以放心的)
  B: 有OLEDb的数据库访问方法。
  C: 有SQLDb的数据库访问方法。
  D: 有静态的数据库访问方法,也有动态方法访问数据库的,奸奸杀杀、杀杀奸奸。
  E: 有自己做的数据库连接池方法。
  F: 处了一些必要的数据库访问方法外,其他一些辅助的功能函数也都写在数据库访问类里去了,那还分层干个屁啊?干脆不分层算了嘛,该干啥的,就应该干啥呀。
  G: 完成相同功能的,不同名字的函数多如毛,不知道这个是否属于思路混乱类型的。

   以上问题是通过分析源码发现的错误,那最关键是的,解决参数化的SQL语句执行功能,新来的同事参加工作才四年左右,功夫也不是非常过硬,胆子也不够大,所以他也看着代码不知道怎么弄才可以,找了几个同事帮忙,也没能搞定,因为其他同事也有其他同事要忙的事情,毕竟这个网站先不来钱,先忙乎能来钱的项目更要紧。

  我就好奇,前后有5个以上的人维护过这个项目,怎么就没一个人把这个项目维护得还过得去呢?以前的技术总监,都在管啥呢?难道这些代码质量啥的,管都不管一下?也不指导一下?前后有那么多人,没一个人自觉的深入维护一下?

 

  那还是我来折腾一下吧。

  1:我的数据库访问层写得是相当的不错,可以考虑用我的组件,但是我的组件已经升级到2.0了,VS2008的开发环境下的,没办法用到VS2003下的1.0开发环境里去了,所以这个方法被放弃了,那只能是把我的好思想拿到这个项目里用。

  2:微软的数据库访问方法先不动原则,信任这个是好的。

  3:所有的程序修改为微软的数据库访问方法,工作量太大,受不了,上百个页面需要修正,不是1天就能修改好的。
  4:那先解决参数化的SQL语句执行方法,新写了一个数据库访问的DbHelp类,就这样项目里,又多了一个垃圾出来了一样,变成6个人的痕迹了,呵呵。

  5:这个DbHelp类里写上最有必要的几个数据库访问的函数,然后编译程序通过。
     int ExecuteNonQuery(string commandText, DbParameter[] dbParameters);
     int ExecuteNonQuery(string commandText);
     object ExecuteScalar(string commandText);
     object ExecuteScalar(string commandText, DbParameter[] dbParameters);
     DataTable Fill(string commandText);
     DataTable Fill(string commandText, DbParameter[] dbParameters);
     DataReader ExecuteReader(string commandText, DbParameter[] dbParameters);
     DataReader ExecuteReader(string commandText);
    写好这几个方法,应该足够用了,数据库访问层写那么多方法刚啥,有病啊。

  6:接下来,一个个干掉其他4个人写的函数,每干掉一个函数,编译一次项目,然后整体进行替换处理,花费了2个小时不到,替换删除了几千行以上的代码,终于把乱八七糟的数据库访问方法给全部清理干净了,心理舒服了很多。

  7:再接着,把功能相同、命名不同的函数一个个清理干净、该删除的删除、该放到其他类里的放到其他类里,该干啥的,就放在干干啥的类里,该改名字的该名字。
 
  8:再接着清理,命名不规范的变量名,整体进行替换,例如 strSQL, 看看就想吐,有的替换成 微软的commandText,有的替换成 sqlQuery 等,虽然 sqlQuery也未必是对的,但是总体上讲比恶心的 strSQL 强很多。

  9:一个个页面里的参数化问题,我写了一个标准的例子程序,这个我实在是没精力修改了,我们新来的同事工作也很认真,就叫给他慢慢的把这上百个页面,一个个修正好,他足足修改了2天,才走了一圈,把参数化的错误都修正了。

  10:在用了外壳,在 Global.asax 里的,SQL注入预防措施,尽量防止SQL注入,进行了双层的安全防护措施。

  11:测试了几个小时,典型的页面都运行正常,再发布给客户,重构工作告一段落。

  有些东西,需要有魄力、需要有突破能力,需要有全盘把握能力,才能折腾,否则,花费1个月才能修改好,那就不叫水平了,就用1-2天就可以重构多年的历史遗留问题,那才叫水平,动手能力。


  有些问题,改改的现在就改,还没到癌症晚期时就应该看看病,现在不调整,以后这个新员工辞职了,又来一个,又走一个,越改越乱,越维护越乱,那公司这么多前前后后也投入了不少钱,这次来个有力度的修改,以后接手的人,看着代码也清爽,上手也容易,理解也容易,一个项目有4-5种数据库访问方法,人家到底要用哪个呀?不是头晕啊?给将来要接手的人,铺个路吧,让他接手后,不要再觉得很恶心,写得很乱。

  只有天天仔细维护、改进的架构,才有长久的生命力,该改的错误要及时修正,一天比一天稳健,劳动成果才能有效的积累下来的,3年都不维护了,那整个系统也就废掉了,成了电子垃圾,公司的投入,这么多人,前前后后的维护辛勤劳动就这样人间蒸发了,成了电子垃圾了,为什么我们的劳动不值钱?老外的劳动就值钱?因为我们不懂得积累,劳动成果在严重浪费,管理不善也是更大的问题所在。


  思路严谨的人,才能把重构公司一个网站的详细步骤分解得先后顺序里得清楚,每个步骤的先手顺序、难度、关联、影响范围等等,分解成N个小功能节点,里程碑,有条有理的进行工作分解安排好。

转载于:https://my.oschina.net/iwenr/blog/227865

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_827834.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一步步构建大型网站架构

2019独角兽企业重金招聘Python工程师标准>>> 之前我简单向大家介绍了各个知名大型网站的架构,亿万用户网站MySpace的成功秘密、Flickr架构、YouTube网站架构、PlentyOfFish 网站架构学习、WikiPedia技术架构学习笔记。这几个都很典型,我们可以…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标,可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间,指从发出请求到最后收到响应数据所需要的时…

python+beautifulsoup+smtp爬取学院网站的信息公告+邮件发送

最近学习了利用python爬虫,甚是有趣。所以写了个试用的小程序分享出来。 学院的相关通知都会放在网站的信息公告上,但每天打开电脑->打开浏览器->打开学院网站,就为了看个信息公告,挺麻烦还容易忘记。但害怕错过重要通知&a…

python 爬网站上的图片

最近在做bot的动物识别,最后根据大会给出来的测试数据,发现对简笔画的动物识别处于懵圈状态,识别效果很差~故我需要自己爬取一些简笔画的图片~ 手写学习了某一网站的图片爬取: 附上代码: # -*- coding: utf-8 -*-…

ubuntu安装网站服务器,Ubuntu安装服务器

tomcat 的安装安装 Tomcat 需要首先安装配置 JDKJava 的安装在 Ubuntu 和 Linux Mint 上安装 Oracle JDK使用下面的命令安装,只需一些时间,它就会下载许多的文件,所及你要确保你的网络环境良好:sudo add-apt-repository ppa:webup…

织梦tag.php删,DedeCMS的TAG标签SEO问题改进及PHP源代码讲解

DEDECMS是最优秀的中文开源CMS系统之一了,不过,DEDE系统也不是尽善尽美的,存在许多待改善的地方,且不说它那基本广受诟病的安全问题,今天跟版网就找其中一个细节说说它的问题,那就是它的tag标签问题。DEDEC…

怎么把整个段落往左移_单页网站怎么做SEO优化与推广

单页网站SEO是一个相对特别的优化工作,它更多的应用于在线商品快速交易行业,单页网站其实往往更多的应用在SEM竞价推广,而不是SEO。SEO单页排名技术:指的是依赖于一个单独的页面,对目标关键词进行优化,通常…

怎么嵌入到网站的html源代码中_怎么用好结构化数据标记,手把手教你做schema markup code...

什么是结构化数据(schema markup)?Schema Markup( https://schema.org/)是一种代码形式用来帮助你的网页和搜索引擎进行友好的沟通,告诉搜索引擎更多关于你的信息,比如说有时候我们看到搜索结果…

seo管理php源码_网站建设之常用CMS系统的SEO优化功能分析

大家好!我是小熊优化的SEOER,在seo优化这个行业已经从业7年多了,优化过不少的个人和企业网站,根据多年的经验也总结出了不少的优化经验,现在大部分的网站,尤其是单位性质的网站基本都是采用CMS系统来做的&a…

推荐一个学习基础编程技术的网站

推荐一个学习基础编程技术的网站 RUNOOB-菜鸟教程 该网站简介: ----------------------------------------------------------------------------------------------------------------------------------------------------- 关于我们 菜鸟教程提供了最全的基础…

如何免费领取 Pluralsight 等各大学习网站会员?

步骤 首先你需要一个微软账号,如果你没有的话可以去注册一个,点击 注册 。 点击网址 微软 Visual Studio 福利 并登陆你微软账号,这时你会看到下面有很多激活码可以领取。 激活 点击Activate,根据操作步骤,在Pluralsight页面输入…

请检查网站服务器是否正常.,请检查服务器地址是否正确

请检查服务器地址是否正确 内容精选换一换网站的访问与云服务器的网络配置、端口通信、防火墙配置、安全组配置等多个环节相关联。任意一个环节出现问题,都会导致网站无法访问。本节操作介绍网站无法访问时的排查思路。网站无法访问怎么办?如果打开网站有…

实现WorkPress网站文章代码高亮显示

首先需要在WorkPress中下载WP Githuber MD,下载方法如下:插件—>安装插件—>右上角搜索框输入WP Githuber MD—>下载该插件。 有了插件后,在插件—>已安装插件中找到WP Githuber MD—>设置WP Githuber MD的属性。选中模组&am…

CTF_Crypto_MD5【BUUCTF网站题库】

题目 MD5 解压 解题 工具 MD5 解码工具 https://www.somd5.com/ 答案 最后 在flag输入 flag{admin1} 成功!!! 小结 MD5简介 MD5是一种常见的加密方式,但准确来说,它只是一种编码方式,它将任意有限…

CTF_Crypto_Url编码[BUUCTF网站]

题目 Url编码 由此可以看出是url编码和解码操作 即 encode and decode 题目 具体的url编码后的格式 解题 url编码–拓展 浏览器打包表单输入的格式 url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value…

【Ubuntu】}Ubuntu镜像网站

Ubuntu镜像下载 镜像下载 阿里云镜像站-aliyun mirrors 镜像网址: ** 浙江大学;(易进)xjtU(西安交通大学)华为云tsinghua(清华大学)Beijing University of Posts and Telecommunications(北邮大)&#x…

程序员必备网站和工具

程序员必备网站和工具 思维工具:XmindPPT模板:办公资源、站长素材、笨鸟网、PPTStone、六图网、欧酷PPT招聘软件:前程无忧、智联招聘、BOSS直聘Maven仓库:https://mvnrepository.com/清华大学开源软件镜像站:https://…

HttpClient4登陆有验证码的网站

其实就这个问题,本来是很简单的,我自己花了近两个下午才搞定,现在记录一下。也希望能帮助后来的朋友。先说httpclient 操蛋的httpclent!为什么说操蛋呢,因为从httpclient3到httpclient4,有很大的变化,而且我自己水平也不够,在jar包上出了很多问题(例如我不知道还有个httpcore…

大型网站技术架构 读书笔记4 高可用架构

说句掏心窝的话,高可用甚至比高性能更重要。为什么? 因为你把系统的性能优化10倍,你的老板可能会说:小董呀,干的不错。 可是,如果你负责的模块,三天两头就宕掉了,嘿嘿,你懂得。 可用性度量 99%-----网站年度不可用时间小于88个小时 99.9%---网站年度不可用时间小于9个小时 99.…

大型网站技术架构 读书笔记3 高性能架构

很明显,这一章是说性能优化的,那么在说性能之前,我们得先了解性能的具体定义,也就是说如何评定一个系统性能是好还是不好。因此,我们就先说说性能测试,然后分别是前端性能,应用服务器的性能以及存储性能的优化。性能测试 1 不同的人对性能的认识是不一样的对用户来说,他们认为的…