那些年我们一起写过的代码
2015-09-28 15:49
267 查看
在学校读书的时候,我仅仅写过非常简单的课程设计程序,今天回想起来还不算是编程入门的。我念大学的时候,从来没有想到有一天,我会以写程序谋生。我2009年7月份毕业,入职了广州华南理工大学科技园的一家智能交通行业的小公司,职位是软件工程师,主要的工作就是写代码。
刚进公司,我第一个任务就是做公司的网站。我的毕业设计就是做一个网站,不管是现在还是过去,我都觉得毕业设计很糟糕,糟糕到我后悔选那个题目了。那也算是有经验了吧,一到公司,我就刷刷开始写代码。有必要说明一下,我开发的网站架构,asp.net+sql server 2000,使用的开发工具是visual studio 2005。
毕业设计的时候,我只是做网站的后台,所以在进入公司开始写公司网站程序的时候,我就先从后台开始写了。我自己的工作安排是先完善后台的程序,可以实现文章的管理,然后再写网站前台。我想先从熟悉的东西开始做,才会比较有成就感,还能学到东西做前台的知识。
现在,我依然记得那时候写的代码。我增加一个网页aspx文件,就直接在页面的.aspx.cs里面写实现代码。数据库连接串写在web.config里面,用户名和密码都是使用明文的。先将控件拉到aspx文件上,在cs文件里面,我就直接写插入或者删除或者查询数据库的代码。
我用了两个月终于把网站后台和前台开发完成,并让领导将网页内容发布好。我就租用了一个网络空间,开始发布网站。说起来还算是顺利的,可是因为我写代码的方式真的很糟糕,竟然收到sql注入攻击,恶毒的无耻的黑客竟然将数据的内容给我删除了,让我的网站数据空空如也。
我有思考过为什么我写的程序那么容易受到攻击,因为我执行数据库的语句没有过滤掉那些非法的字符啊,网页传什么内容我就直接操作什么东西。我没有使用参数的方式执行sql语句,这就是问题所在啊。
我的第一个作品或者任务,今天我都依然觉得很失败,没有做得更好。但是我却从这个任务中学到很多东西。我开始关注重构,关注网站的安全,关注更多技术可以解决的问题。
重复的代码是让我无法忍受的东西。重复的代码带来很多问题,简单的程序也变得臃肿和难以维护,一出错就要改变所有的页面代码。臃肿的东西总是让我们很快定位问题所在,无法快速地处理bug。
网站安全。这个问题是我写的公司网站受到攻击的时候,我才关注的。我幸好开发了一个功能,叫做数据库备份和恢复。我将发布的内容备份起来,在网站遭受到攻击的时候,我迅速恢复我们公司的网站。但是,我更加关心的是,如何开发一个能够避免sql注入之类攻击的网站呢?那时候,我就开始用谷歌查询解决办法(我们那时候还可以使用谷歌),学到了解决问题的办法,就是要过滤网页传递的内容,或者使用参数的方式执行sql语句。
数据库事务处理的缺乏。我知道数据库有事务这个东西,却不知道在C#编程的时候也会用到。
写那些代码的时候,我刚大学毕业,如今我已经工作五六年了,已经知道避免当初的犯的错误了。谢谢那些代码,谢谢那个工作机会,她让我成长让我更加努力学习。
刚进公司,我第一个任务就是做公司的网站。我的毕业设计就是做一个网站,不管是现在还是过去,我都觉得毕业设计很糟糕,糟糕到我后悔选那个题目了。那也算是有经验了吧,一到公司,我就刷刷开始写代码。有必要说明一下,我开发的网站架构,asp.net+sql server 2000,使用的开发工具是visual studio 2005。
毕业设计的时候,我只是做网站的后台,所以在进入公司开始写公司网站程序的时候,我就先从后台开始写了。我自己的工作安排是先完善后台的程序,可以实现文章的管理,然后再写网站前台。我想先从熟悉的东西开始做,才会比较有成就感,还能学到东西做前台的知识。
现在,我依然记得那时候写的代码。我增加一个网页aspx文件,就直接在页面的.aspx.cs里面写实现代码。数据库连接串写在web.config里面,用户名和密码都是使用明文的。先将控件拉到aspx文件上,在cs文件里面,我就直接写插入或者删除或者查询数据库的代码。
string connectionString = ConfigurationSettings.AppSettings["ConnectionString"]; string title = this.TextBox1.Text.Trim(); string content = this.TextBox2.Text.Trim(); if (string.IsNullOrEmpty(title) || string.IsNullOrEmpty(content)) { Response.Write("不能为空!"); } using (SqlConnection conn = new SqlConnection(connectionString)) { string sql = "insert into news(title,contenct)values(" + title + "," + content + ")"; conn.Open(); SqlCommand cmd = new SqlCommand(sql,conn); if (cmd.ExecuteNonQuery() < 0) { Response.Write("插入失败!"); } }
我用了两个月终于把网站后台和前台开发完成,并让领导将网页内容发布好。我就租用了一个网络空间,开始发布网站。说起来还算是顺利的,可是因为我写代码的方式真的很糟糕,竟然收到sql注入攻击,恶毒的无耻的黑客竟然将数据的内容给我删除了,让我的网站数据空空如也。
我有思考过为什么我写的程序那么容易受到攻击,因为我执行数据库的语句没有过滤掉那些非法的字符啊,网页传什么内容我就直接操作什么东西。我没有使用参数的方式执行sql语句,这就是问题所在啊。
我的第一个作品或者任务,今天我都依然觉得很失败,没有做得更好。但是我却从这个任务中学到很多东西。我开始关注重构,关注网站的安全,关注更多技术可以解决的问题。
重复的代码是让我无法忍受的东西。重复的代码带来很多问题,简单的程序也变得臃肿和难以维护,一出错就要改变所有的页面代码。臃肿的东西总是让我们很快定位问题所在,无法快速地处理bug。
网站安全。这个问题是我写的公司网站受到攻击的时候,我才关注的。我幸好开发了一个功能,叫做数据库备份和恢复。我将发布的内容备份起来,在网站遭受到攻击的时候,我迅速恢复我们公司的网站。但是,我更加关心的是,如何开发一个能够避免sql注入之类攻击的网站呢?那时候,我就开始用谷歌查询解决办法(我们那时候还可以使用谷歌),学到了解决问题的办法,就是要过滤网页传递的内容,或者使用参数的方式执行sql语句。
数据库事务处理的缺乏。我知道数据库有事务这个东西,却不知道在C#编程的时候也会用到。
写那些代码的时候,我刚大学毕业,如今我已经工作五六年了,已经知道避免当初的犯的错误了。谢谢那些代码,谢谢那个工作机会,她让我成长让我更加努力学习。
相关文章推荐
- C++11标准中常用到的各种算法汇总.
- 结对编程初体验
- Java中异常处理之try和catch代码块的使用
- C# form 传参数的几个方法
- ASP.NET中的几种弹出框提示基本实现方法
- python入门之(if、for等)
- mac 64位 安装wxpython后报错解决方法
- google的levelDB实现原理分析
- C++之char , signed char , unsigned char
- php implode()函数
- Spring之FactoryBean .
- 【Raspberry Pi】openwrt 路由
- Java Util 验证身份证号码是否规范
- Java实现把cmyk格式图片转换为RGB格式图片
- matlab(8) Regularized logistic regression : 不同的λ(0,1,10,100)值对regularization的影响,对应不同的decision boundary\ 预测新的值和计算模型的精度predict.m
- 代码质量、重构、软件设计相关的一些资料收集
- 全国各城市经纬度,代码等
- 利用java监听器实现在线人数统计
- eclipse下Ctrl+H搜索并替换全项目字符串
- python的asyncio资料