为什么要使用图形验证码
为了防止攻击者编写程序重复提交表单,为其他用户和网站运行制造麻烦,所以在提交表单之前一般需要使用图形验证码进行验证,确认提交操作是人为操作,而非机器批量操作。
原理剖析
在生成图形验证码时,主要应用两方面的技术:
1、生成随机数或字母
2、将生成的随机数或者随机字母转换成图片格式并在图片上加入噪点并显示出来。
生成方法:
1、前端控件代码
1 2 |
|
2、ValidateNum.aspx页处理步骤
(1) 随机生成一个长度为N的随机字符串,N的值可由开发人员自行设置。该字符串包含数字,字母等。
(2) 将随机生成的字符串创建成图片并显示。
(3) 保存验证码
首先在ValidateNum .aspx.cs文件中创建一个CreateRandomNum(int n)方法,随机生成一个长度为n的随机字符串。为了避免生成重复的随机数,将通过变量记录随机数结果,如果出现于上次随机数相同的数值,则调用方法本身,以保证生成不同的随机数。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
然后创建CreateImage(string validateNum)方法基于产生的随机字符串,进一步生成图形码,为了进一步保证安全性,为图形验证码加一些干扰色,如随机背景花纹、文字处理等。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
|
最后,在页面加载事件Page_Load中,创建并显示验证码字符串的图片,将验证字符串保存在Session里。
1 2 3 4 5 6 7 8 9 |
|
至此,一个简单的图像验证码生成算法已经写完,当然大家可以在这个基础上增加更加丰富的安全设置,比如Session的过期时间等。
Atas ialah kandungan terperinci ASP.NET图形验证码生成实践. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!