代码改变世界

随笔档案-2008年05月

ASP.NET中防止注入攻击

2008-05-31 19:22 by TTlive, 192 阅读, 收藏,
摘要: 概述 : 你应该在程序中验证所有的不信任输入.你应该假定所有的用户输入都是非法的.用户可以在应用程序中提供表单字段,查询字串,客户端cookies和浏览器环境值比如用户代理字串和IP地址等. 弱输入校验通常为注入攻击提供了机会.下面是常见的利用弱输入校验或无输入校验进行攻击的手段.SQL 注入(SQL injection). 如果你使用用户的输入值来动态构造SQL语句,那么数据库可能执行攻击性的有害SQL语句.跨站脚本(Cross-site scripting). 跨站脚本攻击利用网页验证漏洞注入客户端脚本.接下来这些代码被发送到受信任的客户端电脑上并被浏览器解释执行.因为这些代码来自受信.. 阅读全文

Asp.NET大文件上传开发总结(二)

2008-05-30 20:22 by TTlive, 148 阅读, 收藏,
摘要: 为了提供文件内容,我们需要首先需确定客户请求中发送的有文件内容,然后确定文件内容的位置。这部分对应的代码如下: 1HttpApplication app = sender as HttpApplication;2 HttpWorkerRequest request = GetWorkerRequest(app.Context);3 4 if (!IsUploadRequest(app.Request)) return; //不是文件上传,则退出5 6 string sContentType = app.Request.Co... 阅读全文

Asp.NET大文件上传开发总结(一)

2008-05-30 19:12 by TTlive, 165 阅读, 收藏,
摘要: 以前开发过一个用Asp.NET上传大文件的代码,由于是在NET1.1下开发的,发现不能在NET.20下运行,前几天将这个问题解决了,现在把 整个开发过程整理一下,供大家参考。由于内容较多,所以我打算分成六篇来写,第一篇写一下需要解决的问题和大致解决思路,再用四篇具体写一下开发中需要解 决的四个主要问题,最后再写一个组件的使用方法。1、问题提出: 使用Asp.NET在上传文件时,IIS接收到请求内容后,发送到Asp.NET的管道中,然后Asp.NET的ISAPI将读取的内容是全部 装入服务器内存(NET2.0在请求内容较大时,会存放到临时文件中,见后面的开发说明),在上传文件时,消耗服务器资源. 阅读全文

.Net环境下基于Ajax的MVC方案

2008-05-30 10:36 by TTlive, 130 阅读, 收藏,
摘要: 1、问题背景现在,越来越多人开始尝试基于Ajax进行无刷新的Web开发,不过,在.Net环境下,应用Ajax并不是非常方便,这主要可能是由以下一些原因造成的:·由于Ajax基于javascript的本质,使得开发者必须对javascript非常了解,起码,其javascript能力足以实现对callback返回内容对页面的更新,所以开发的门槛就有一定程度的上升· 当基于Ajax机制进行开发时,原有的基于postback方式下时,asp.net由后台逻辑代码(Model),aspx页面(View)、 aspx.cs(Controller)构成的MVC构架其实失效了,当call 阅读全文

asp.net控件开发(三):处理标签间内容

2008-05-29 23:17 by TTlive, 158 阅读, 收藏,
摘要: asp.net控件标签间的内容有的时候处理成节点有的时候处理成子控件。如:间的节点就会处理成属性Text的值,而如Panel这样的控件则就是将其处理成子控件。首先看如何处理成属性的。一、处理成为属性 对于控件标签间的内容我们可以通过类System.Web.UI.ParseChildrenAttribute类控制控件对其内容的解析行为。 ParseChildrenAttribute是一个类级别的属性标识,有四个构造函数: 1.ParseChildrenAttribute(),ChildrenAsProperties属性设置为false,就是不解析成控件。 2.ParseChildre... 阅读全文

SQL高手技能--精妙SQL语句介绍

2008-05-29 11:15 by TTlive, 255 阅读, 收藏,
摘要: 说明:复制表(只复制结构,源表名:a 新表名:b) SQL: select * into b from a where 1<>1 说明:拷贝表(拷贝数据,源表名:a 目标表名:b) SQL: insert into b(a, b, c) select d,e,f from b; 说明:显示文章、提交人和最后回复时间 SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.tit... 阅读全文

提高IT专业人员薪酬水平的十种方法

2008-05-29 09:01 by TTlive, 259 阅读, 收藏,
摘要: IT招聘专家和工作场所专家总结了技术专业人员应该掌握的一些具体技能。这些技能会帮助IT专业人员避免工作的低谷和得到薪酬上涨的好处。下面就是让IT人员提高薪酬的10种方法。 1.熟悉SAAS产品IT人员配备和随需应变的咨询公司Bluewolf的共同创始人和负责人Michael Kirven说,SAAS(软件服务)知识在用人要求条件中的比例已经从三年前的5%提高到了35%。拥有这方面知识的人可能很快提高自己的薪酬,无论他 们是否知道alesforce、Google Apps或者WorkDay。每一个人都需要知道这些产品如何适合当前的IT架构。2.获得SAP>知识或者经验位于费城的人才和外包服 阅读全文

ASP.NET 之Form安全认证

2008-05-28 23:00 by TTlive, 165 阅读, 收藏,
摘要: 一、使用Form认证的一般设置 <!--Form认证设置Start--> <authentication mode="Forms"> <forms name=".FrameWork" defaultUrl="Default.aspx" loginUrl="Login.aspx" enableCrossAppRedirects="true" path="/"></forms> </authentication> < 阅读全文

Web.config详解 + asp.net优化方法

2008-05-27 19:23 by TTlive, 146 阅读, 收藏,
摘要: 这种将session信息存储在进程外的方式不光指可以将信息存储在本机的进程外,还可以将session信息存储在其他的服务器的进程中。这时,不光需要将mode的值改为StateServer,还需要在stateConnectionString中配置相应的参数。例如你的计算你是192.168.0.1,你想把session存储在ip为192.168.0.2的计算机的进程中,就需要设置成这样: stateConnectionString=/"tcpip=192.168.0.2:42424/"。当然,不要忘记在192.168.0.2的计算机中装上.NET Framework,并且启动a 阅读全文

C# .Net中的类型转换

2008-05-26 21:16 by TTlive, 156 阅读, 收藏,
摘要: 1. 装箱、拆箱还是别名许多 C#.NET 的书上都有介绍 int -> Int32 是一个装箱的过程,反之则是拆箱的过程。许多其它变量类型也是如此,如:short <-> Int16,long <-> Int64 等。对于一般的程序员来说,大可不必去了解这一过程,因为这些装箱和拆箱的动作都是可以自动完成的,不需要写代码进行干预。但是我们需要记住这些类型之间的关系,所以,我们使用“别名”来记忆它们之间的关系。C# 是全面向对象的语言,比 Java 的面向对象都还彻底——它把简单数据类型通过默认的装箱动作封装成了类。Int32、Int16、Int64 等就是相应的类 阅读全文

数据库开发必看 -- 用索引优化SQL,开发优秀的分页存储过程(三)

2008-05-26 15:59 by TTlive, 158 阅读, 收藏,
摘要: 三、实现小数据量和海量数据的通用分页显示存储过程 建立一个web 应用,分页浏览功能必不可少。这个问题是数据库处理中十分常见的问题。经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页。但这种分页方法仅适用于较小数据量的情形,因为游标本身有缺点:游标是存放在内存 中,很费内存。游标一建立,就将相关的记录锁住,直到取消游标。游标提供了对特定集合中逐行扫描的手段,一般使用游标来逐行遍历数据,根据取出数据条件的 不同进行不同的操作。而对于多表和大表中定义的游标(大的数据集合)循环很容易使程序进入一个漫长的等待甚至死机。 更重要的是,对于非常大的数据... 阅读全文

数据库开发必看 -- 用索引优化SQL,开发优秀的分页存储过程(二)

2008-05-25 17:09 by TTlive, 187 阅读, 收藏,
摘要: 二、改善SQL语句 很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解。比如: select*fromtable1wherename='zhangsan'andtID>10000 和执行: select*fromtable1wheretID>10000andname='zhangsan' 一些人不知道以上两条语句的执行效率是否一样,因为如果简单的从语句先后上看,这两个语句的确是不一样,如果tID是一个聚合索引,那么后一句 仅仅从表的10000条以后的记录中查找就行了;而前一句则要先从全 阅读全文

数据库开发必看 -- 用索引优化SQL,开发优秀的分页存储过程(一)

2008-05-24 21:11 by TTlive, 186 阅读, 收藏,
摘要: (一)深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别: 其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按 照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个 字. 阅读全文

C#中一套生成sql条件的类

2008-05-23 23:11 by TTlive, 328 阅读, 收藏,
摘要: 在进行sql查询的时候,有时候要进行很多条件限制,自己来拼写SQLwhere条件容易出错,而且判断条件复杂,后期维护困难,基于这个原因我在一个小 项目中写了一套生成sql条件的类。总共包括一个Condition类,与两个枚举型类型(LogicOper,CompareOper) 代码如下:publicclassCondition...{staticstring[]logicOpers=newstring[]...{"and","or"};staticstring[]compareOpers=newstring[]...{">",& 阅读全文

asp.net控件开发(二) -- 简单属性

2008-05-22 23:37 by TTlive, 135 阅读, 收藏,
摘要: 我们开发出来的控件一般都需要跟使用控件的人编程人员交互,其中交互有两个途径:一个是属性还有就是事件。属性可能是简单的类型如:int、string等并不太复杂的类型,也有比较复杂的类型如:集合。一、属性实现交互我们还是沿用上面的例子来添加属性 PicShow示例: publicclassPicShow:Control{privatestring_imgUrl;//属性publicvirtualstringImgUrl{get{returnthis._imgUrl;}set{this._imgUrl=value;}}protectedoverridevoidRender(HtmlTextWrite 阅读全文

asp.net控件开发(一) -- 显示控件内容

2008-05-20 19:54 by TTlive, 211 阅读, 收藏,
摘要: asp.net控件的显示自然会离不开输出HTML、CSS、Javascript等前台的显示内容,所以开发一个控件的时候第一件事就是要知道如何输出客户端要显示的内容。一、选择基类asp.net中所有的标准控件都可以拿过来作为基类,如果我们要开发的控件只是对原有的标准控件做一些功能上的加强的话(如:你对TreeView的CheckBox添加一些随动的功能),就可以直接拿标准控件过来作为基类。一般的如果开发的控件从标准里面找不到合适的,可以从三个类中来继承:System.Web.UI.ControlSystem.Web.UI.WebControls.WebControlSystem.Web.UI.W 阅读全文

Linux美化也疯狂 10个最漂亮桌面展示(图)

2008-05-19 20:54 by TTlive, 991 阅读, 收藏,
摘要: 漂亮的桌面可绝对不仅仅是Windows和Mac的专利,只要您能细心雕琢,让Linux的KDE和GNOME原本傻傻的界面脱胎换骨是没有任何问题的.以下就是Digg上被推荐的10个最漂亮的Linux桌面,有的是模拟其它操作系统的作品,有的则完全原创,颇具美感.你最喜欢哪一个呢?2)3)4)5)6)7)8)9)10)转自CSDNCSDN声明:CSDN登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述 阅读全文

Asp.net—递归方式的FindControl

2008-05-18 11:49 by TTlive, 320 阅读, 收藏,
摘要: 一般 FindControl 方法,大都是以 ID 寻找控件的第一阶的子控件(若控件有多载 FindControl 方法则例外)。之前有发表过一篇「递归方式的 FindControl」的文章,它是以递归方式逐层往下去执行 FindControl,找到指定 ID 的控件。此篇文章是提供进阶版的 FindControl,此方法一样是以递归方式逐层往下去执行 FindControl,不过它不限只能以 ID 去寻找控件,而是指定「型别、属性名称、属性值」去寻找符合的控件。1/**/'''<summary>2'''递归寻找符合条件的控件。3&# 阅读全文

动态代码的使用(反射和动态生成类)

2008-05-15 23:07 by TTlive, 243 阅读, 收藏,
摘要: 在软件开发尤其是框架和底层开发时,为了更灵活的控制代码,常常需要进行一些动态的操作。比如根据用户的输入等动态的调用类中的方法或者根据数据库表结 构、用户要求动态的生成一些类,然后再动态的调用类中的方法。当然使用这些方式时会对性能有一点影响,具体使用过程中可以根据实际情况来定,不过一般的 B/S开发中主要的瓶颈还是在数据库操作和网速方面,这点影响应该可以忽略的 一、反射的使用 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。 需要使用的命名空间:System.Reflection 反射的作用很多,下面的例子主要是看一下. 阅读全文

详解ASP.NET状态管理方式优缺点

2008-05-14 19:43 by TTlive, 222 阅读, 收藏,
摘要: 现在ASP.NET程序员可以使用很多种方式来保存用户请求信息。下面主要介绍ASP.NET关于状态管理的几种方式。 一般而言,HTTP协议是非状态服务,它不保存任何用户请求信息。直至NetScape开始使用Cookies来保存用户请求信息,Web应用程序有了极大的发展。现在ASP.NET程序员可以使用很多种方式来保存用户请求信息。 下面主要介绍ASP.NET关于状态管理的几种方式。 客户端 ASP.NET,提供了Cookies, QueryStrings (URL), Hidden fields, View State and Control state (ASP.NET 2.0),... 阅读全文