您的位置:首页 > 编程语言

那些年我们一起写过的代码

2015-09-28 15:49 267 查看
在学校读书的时候,我仅仅写过非常简单的课程设计程序,今天回想起来还不算是编程入门的。我念大学的时候,从来没有想到有一天,我会以写程序谋生。我2009年7月份毕业,入职了广州华南理工大学科技园的一家智能交通行业的小公司,职位是软件工程师,主要的工作就是写代码。

刚进公司,我第一个任务就是做公司的网站。我的毕业设计就是做一个网站,不管是现在还是过去,我都觉得毕业设计很糟糕,糟糕到我后悔选那个题目了。那也算是有经验了吧,一到公司,我就刷刷开始写代码。有必要说明一下,我开发的网站架构,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#编程的时候也会用到。

写那些代码的时候,我刚大学毕业,如今我已经工作五六年了,已经知道避免当初的犯的错误了。谢谢那些代码,谢谢那个工作机会,她让我成长让我更加努力学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: