深蓝居

关注MS的VS2008和SQL Server 2008

常用链接

统计

积分与排名

朋友

学习生活

最新评论

.Net开发

再论验证码安全:请及时销毁你的验证码
     摘要: 我在上一篇文章中讲到了如何使用C#模拟用户登录具有验证码网站。今天我就换位思考一下,站在网站开发人员的角度讲一讲验证码的的一个安全问题:及时销毁网站中的验证码。

为了方便大家理解,这里我就以一个投票的应用网站为例进行说明。投票网站首先要防止的就是用户不断点击投票按钮来重复投票;  阅读全文

posted @ 2008-06-04 03:38 深蓝 阅读(1694) | 评论 (28)  编辑

关于ADO.NET连接池
     摘要: 前几天同事问我一个问题,一种CS架构的程序,直接把SQL Server作为服务端,每个客户端直接连接数据库操作,如果客户端打开的数量过多时SQL Server的连接数将会特别高,数据库端形成性能瓶颈,这种情况下怎么办?想了想,造成这种情况的原因是ADO.NET的内部机制造成的。ADO.NET中为了提高性能,所以使用了连接池,这样每个请求就不必都创建一个连接,然后认证,然后执行SQL,而是从连接池中直接取出连接执行SQL,执行完成后也并不是真正关闭连接,而是将该连接重新放回连接池中。如果有100个客户端,每个客户端在使用一段时间后连接池中保存了10个连接,那么在这种情况下,即使不在客户端做任何操作,SQL Server上都有1000个连接,这样不出性能问题才怪。
既然是连接池的问题,那么我就针对该问题想到了2个解决办法:
  阅读全文

posted @ 2008-05-16 02:10 深蓝 阅读(136) | 评论 (2)  编辑

使用C#登录带验证码的网站
     摘要: 我在上一篇文章中已经讲解了一般网站的登录原来和C#的登录实现,很多人问到对于使用了验证码的网站该怎么办,这里我就讲讲验证码的原理和对应的登录方法。

验证码的由来

几年前,大部分网站、论坛之类的是没有验证码的,因为对于一般用户来说验证码只是增加了用户的操作,降低了用户的体验。但是后来各种灌水机器人、投票机器人、恶意注册机器人层出不穷,大大增加了网站的负担同时也给网站数据库带来了大量的垃圾数据。为了防止各种机器人程序的破坏,于是程序员想出了只有人眼能够识别的,程序不容易识别的验证码!

验证码是一个图片,将字母、数字甚至汉字作为图片的内容,这样一张图片中的内容用人眼很容易识别,而程序将无法识别。在进行数据库操作之前(比如登录验证、投票、发帖、回复、注册等等)程序首先验证客户端提交的验证码是否与图片中的内容相同,如果相同则进行数据库操作,不同则提示验证码错误,不进行数据库操作。这样各种机器人程序就被拒之门外了!

但是随着计算机科学的发展,模式识别等技术越来越成熟,于是编写机器人程序的家伙可以通过程序将直接写在图片中的内容识  阅读全文

posted @ 2008-05-08 02:19 深蓝 阅读(3654) | 评论 (46)  编辑

使用C#实现网站用户登录
     摘要: 我们在写灌水机器人、抓资源机器人和Web网游辅助工具的时候第一步要实现的就是用户登录。那么怎么用C#来模拟一个用户的登录拉?要实现用户的登录,那么首先就必须要了解一般网站中是怎么判断用户是否登录的。
HTTP协议是一个无连接的协议,也就是说这次对话的内容和状态与上次的无关,为了实现和用户的持久交互,网站与浏览器之前在刚建立会话时将在服务器内存中建立一个Session,该Session标识了该用户(浏览器),每一个Session都有一个唯一的ID,第一次建立会话时服务器将生成的这个ID传给浏览器,浏览器在接下来的浏览中每一个发向服务器的请求中都将包含该SessionID,从而标识了自己的身份。
  阅读全文

posted @ 2008-05-06 02:31 深蓝 阅读(3555) | 评论 (35)  编辑

.NET牛人应该知道些什么,我的回答

posted @ 2008-04-13 23:27 深蓝 阅读(448) | 评论 (3)  编辑

AMF学习2远程调用的封装
     摘要: 前一篇文章中已经学习了AMF数据类型,那么接下来就要将一个完整的AMF文件的封装格式了。

AMF文件总体来说分为4部分:前言(Preamble)、AMF头、AMF主体和主体的响应。
  阅读全文

posted @ 2008-04-11 01:58 深蓝 阅读(145) | 评论 (3)  编辑

AMF学习1数据类型
     摘要: AMF是Action Message Format协议的简称,AMF协议是Adobe公司自己的协议,主要用于数据交互和远程过程调用,在功能上相当于WebService,但是AMF与WebService中的XML不同的是AMF是二进制数据,而XML是文本数据,AMF的传输效率比XML高。AMF使用HTTP方式传输,目前主要是用于ActionScript中,即实现Flex和Server之间的通信。  阅读全文

posted @ 2008-04-09 00:27 深蓝 阅读(275) | 评论 (1)  编辑

使用匿名函数减少重复代码

posted @ 2008-04-08 00:29 深蓝 阅读(157) | 评论 (1)  编辑

在VS环境下使用SVN

posted @ 2008-03-29 15:37 深蓝 阅读(217) | 评论 (2)  编辑

使用VS快速将类方法封装成Web服务
     摘要: 在项目中有时需要将整个业务逻辑类下面的方法封装成Web服务,由于只是简单的封装,在Web服务的后台代码中不会写上任何逻辑,这时我们就需要Web服务提供的方法与类下面提供的方法相同,这是就考虑到使用接口。申明一个接口,然后让业务逻辑类和Web服务类都实现该接口即可。这里我们就要用到VS中一个很好的功能:重构!  阅读全文

posted @ 2008-03-18 11:52 深蓝 阅读(2133) | 评论 (4)  编辑

转:[WebServices]介绍

posted @ 2008-03-01 00:05 深蓝 阅读(221) | 评论 (1)  编辑

发布一款层次下拉列表控件
     摘要: 在项目中经常遇到树状结构的对象比如产品分类、部门结构、地区……对于这类对象的呈现,一般都使用树控件(比如VS2005自带的TreeView控件)。但是树控件的使用和操作都比较复杂,对于一些比较简单的操作,比如单选其中的一个节点的情况则可用使用下拉列表框来代替。要在DropDownList中展示出树结构的层次,那就必须在每个节点的Text前加入一定的占位符,以实现层次的效果。
由于这种下拉列表控件在项目中经常使用,于是决定写一个通用的服务器控件出来。该控件继承自DropDownList,在使用中只需要为该控件设置用于数据绑定的DataTextField和DataValueField,以及新增的属性ChildProperty(string,对象的Child属性的名字)和DeepChar(string,在表示层次中使用的占位符,默认是“--”),设置了这4个属性后,在后台就只需要将树结构对象的Root节点作为DataSource,然后执行DataBind()即可。
  阅读全文

posted @ 2008-02-25 10:45 深蓝 阅读(3168) | 评论 (11)  编辑

发布一个性能测试工具的破解补丁

posted @ 2007-11-14 18:19 深蓝 阅读(250) | 评论 (6)  编辑

如何使用枚举的组合值
     摘要: 有时我们需要将枚举定义为1,2,4,8.......的值,这样当传入一个3,那么就是表示1,2的组合,如果传入7,那就表示1,2,4的组合。要实现这种功能我们需要用到FlagsAttribute。  阅读全文

posted @ 2007-10-15 12:25 深蓝 阅读(143) | 评论 (0)  编辑

一个类如何实现两个接口中同名同参数不同返回值的函数

posted @ 2007-08-28 11:48 深蓝 阅读(118) | 评论 (2)  编辑

Full .Net开发 Archive


我要啦免费统计