您是第 Web Page Tracking 位访客

水~墨~

昂首阔步,不留一点遗憾!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

距离上次更新随笔已经快1个月了,要不是有这个项目,估计很难又会拾起这些以前很熟悉,现在却很非常生疏的东西。

从4.22左右到5.2 终于完工了, 闲暇时间做的,总体还可以。 

功能也就是增,删,改,展示并打包下载的。

 

 

项目内容:

A公司是某行业权威部门,是系统内的出版机构。 部分企业向A公司缴纳费用后,就可以上传自己的企业信息和产品信息,然后A公司的编辑部门就会根据这些信息来设计宣传广告

 

*生成key后,发放给已经缴费的企业

*企业根据key,一次性填写企业信息和产品信息(产品最多填写6个)

 

 

            

 

1.首先根据要求的字段创建了相关的数据库表

     3个表:  key 表;company表;product表

2. 开始分析如何设计web应用程序

   因A公司给的需求,要求最好在同1页面中收集到所有信息;但是这样的话,在同一个页面要判断好多post过来的参数,公司信息参数20个,单个产品信息10个,最多60产品参数。

  故摒弃了这种做法,用3个页面来实现系统。   addkey.aspx 用于验证key是否有效;addCompany用来判断company是否有效;addProduct用来添加product信息(一次添加一个,添加完可以在本页面展示本企业已经上传的列表)

 

3.确定好页面逻辑就开始动手建立项目

 

  1.   下载动软生成器; 根据数据库生成项目。  生成的项目内 有  Bll,Dll,Common,DbUtitly,Web  5个子项目。
  2.    web项目中有  PageValidate.cs  此页面有正则可以用来判断post或者get过来的参数是否合法化
  3.    Bll 一般逻辑处理项目 用于和Dll 交流数据;假设获取某表最大的Id,则Bll 中有个 Exist(int id){ Return  Dll.Exist(ID);},Dll中有个和Bll中同名的Exist 用来访问数据      库获取信息。  
  4.    DbUtitly 是处理sql的最基本语句,Dll中调用DbUtitly中的成员访问数据库。  一般情况下不单独使用DbUtitly
  5.     Web项目中  根据表的字段 生成了若干页面                例:company表,就生成了add.aspx,show.aspx,delete.aspx,showlist.aspx
  6.     common项目中有一些功能;   比如:发送邮件,弹出对话框;生成excel 等功能。

 

 

 

  根据这个项目又重新熟悉了一些内容如下

 

  • IIS7配置和IIS6配置(win2003 用的IIS6),主机头配置,二级域名配置(要求网络提供商那要解析);注意集成方式和经典方式;注意应用程序池的启动 和一些 具体参数,回收和停止应用程序池。
  • 上传图片时候要给与文件夹写入权限,否则提示无访问权限。
  • 文件夹判断存在否,建立文件夹;文件是否存在,创建文件,删除文件;
  • 如果没用server 控件,则 同一页面要上传多个图片, 用Form表单 Mulitpart 上传,不限制上传数据大小; 普通postdata 限制post数据大小

 

  • 根据第三方dll,来压缩整个项目文件夹,生成压缩包*.zip  ; 附上实例:下载地址
  • 根据动软生成器生成的common类 来生成Excel  *.xls
  • 提供下载压缩包。
  • key要求唯一,则通过GUID,根据机器码,时间,操作系统参数等等好多参数生成 ,目测几千年才会出现一次相同。  sql: NewId();
  • connectString加密。  web.config 可以 用动软生成器的加密工具,对明文数据库连接字符串进行加密。

    

  • sql注入问题;

 假设:a.aspx?id=1     则如果是拼接sql,数据库则执行 select * from X Where id='1'

   如果用户输入的是, 1' or 1=1;drop database xx;--,则数据库执行  select * from x  where id='1' or 1=1;drop database xx;

则xx数据库会被删除掉。

 

解决办法: 通过ADO.net提供的 SqlParm 来生成参数

               sql="select * from product where id=@id";

               sqlParm a=new sqlparm("@id",id);

              然后执行数据库,这样就可以判断是否有注入,如果有注入则自动提交失败。

     

 

    

  

posted on 2013-05-03 09:01  水墨.MR.H  阅读(178)  评论(0编辑  收藏  举报
知识共享许可协议
本博客为水墨原创,基于Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的水墨(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。