asp.net夜话之三:表单和控件
获取,正常情况下用户填写是没有问题,就上面的例子来说用户填写的用户名和密码分别是“zhoufoxcn”和“123456”,那么我们最后得到的SQL语句是:sql=”select * from users where username=’zhoufoxcn’ and password=’123456’”,这样是没有问题的。如果用get方式提交,用户可以对上面的参数进行一些改动,比如在地址栏直接输入:http://localhost/GetUserInfo.aspx?username=zhoufoxcn&pwd=123'';delete * from users'',那么我们得到的SQL就是:string sql=” select * from users where username=''zhoufoxcn'' and password=''123'';delete * from users''”,执行上面的SQL语句就能把Users这个表里的所有数据删除掉!这个一个触目惊心的危险!这个就叫SQL注入。
(2)由于浏览器地址栏能输入的最大字符数有限制,所以用get方式提交不能处理参数值更大的表单,而post方式则没有这个限制。 上面我说到用post方式提交表单相对安全,并没有说绝对安全,就拿上面的表单来说,假如上面的网站代码发布在www.netskycn.com上发布,我们可以通过http://www.netskycn.com/register.aspx和http://www.netskycn.com/GetUserInfo.aspx来访问,那么我们完全可以在本地制作一个网页,HTML的页面都行,它的代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 注意表单的action属性我用了全路径的url地址,只要我们能连上互联网,那么这个表单一样可以正确提交的,同样也能产生触目惊心的危害!对于这个问题如何避免我会专门抽出一篇文章来讲如何防范,这里暂不赘述。 HTML控件 HTML控件在上面的例子里已经用到,它就是指用HTML表单里的一些列元素来提供用户交互,它们都是类似“<input type=”text” name=”name””这样的标记。要呈现什么的形式由type属性来决定,可以有“text”、“password”、“radio”、“checkbox”、“submit”及“reset”等,分别呈现为文本框、密码框、单选框、复选框及提交按钮和重置按钮等。 获取表单值 通过用get方式提交表单我们可以看到提交到服务器的时候,在网页后面有“?username=zhoufoxcn&pw |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |