- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈如何构建安全学校Web网站
浅谈如何构建安全学校Web网站
【 摘 要 】 学校网站的安全面临着日益严重的威胁。本文以网站开发的角度,从表单数据验证、使用存储过程、数据库连接字段加密、关键数据加密及IIS设置五个方面,阐述要保证网站安全应注意的代码设计/安全设置,供开发者借鉴。
【 关键词 】 数据验证;存储过程;加密;IIS
1 引言
当前学校的Web网站己从早期单纯展示学校形象的宣传性网站转变为对学校教师学生提供各种服务的服务型网站,网站在学校的日常事务处理中起着不可或缺的作用。但是随着网站的访问量的增加,网站也面临着越来越严重的安全威胁。要想保证学校Web网站安全,除了采购相应的硬件设备,组建安全的硬件防护体系外,网站开发人员在设计网站时注意采用相关的安全技术,减少网站的安全漏洞,也是保证网站安全的一个重要方面。本文基于ASP.NET程序设计,以网站开发者角度,从几方??谈谈如何构建安全的学校Web网站。
2 表单数据验证
在学校网站开发过程中,因开发周期和程序员水平差异等因素影响,许多网站在设计和开发时没有充分意识到数据合法性校验的重要性,对页面表单域或查询字符串传入的参数并未做出严格的检查和处理,使其在应用中存在安全隐患。这类表单特别容易受到SQL注入式攻击,攻击者利用特殊的SQL代码,通过未经数据验证的表单,动态构造非程序员预期的SQL语句,随意存取数据库、篡改数据、盗取敏感数据,甚至植入恶意指令感染整个网站数据库。
例如,在Web网站的登录验证程序中,一般有用户名(User Name)密码(UserPwd)两个字段,程序会通过用户输入的用户名和密码来执行验证操作。如果程序员使用拼接方式来构造SQL查询语句,代码如下所示(假定界面上有txtName和txtPwd两个用户输入框):
String sqlStr=”select * from userTable where userName=’”+txtName.Text+”’and userPwd=’”+txt-
Pwd.Text+”’”
其原理是通过查找UserTable表中的用户名和密码,一致后方能进行授权访问网站。但是,如果攻击者在界面输入框中分别输入“whatever’ or 1=1 - -”和”abc”(不包含双引号),点击登录后,后台程序即动态构造的SQL就变为:
Select * from userTable where userName=’whatever’ or 1=1 -- ‘ and userPwd=’abc’
该语句中进行了两个条件判断,中间有一个逻辑连接词or,所以说只要有一个条件成立就会登录成功。而攻击者输入的“1=1”从逻辑上是恒成立的,后面的密码验证部分又被SQL注释符号“--”注释掉了,这样,无论攻击者输入的用户名和密码是否正确,都将能顺利进入系统,获取操作权限。
防范此类SQL注入式攻击的解决方法有两种。
(1)过滤特殊字符串。对从表单接收的用户输入数据(text),利用replace函数,使用类似如下的语句进行过滤:“text = text.Replace(, )”,特别对于一些特殊字符,例如单引号、双引号、连接号等和and、or等逻辑操作字符。对这些特殊字符进行过滤,可有效防止攻击的发生。
(2)使用正则表达式约束用户输入。可以对用户输入的用户名、邮件地址、长度等应用进行约束,使其符合预期的书写要求。在ASP.NET的Web窗体中,可以通过开启ValidateRequest验证属性实现。如果将该属性设为真,则用户在Web窗体中输入具有威胁的信息时,页面将抛出异常,从而保证了Web窗体访问的安全性。
3 使用存储过程
传统的SQL字符串拼接的方式容易被SQL注入式攻击利用 (如上例所示),建议使用参数化的SQL命令或存储过程,即通过SqlCommand.Parameters 属性的参数传值方法实现防范。
所谓存储过程是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。
系统管理员可以对执行的某一个存储过程进行权限限制,从而能够实现对某些数据访问的限制,避免非授权用户对数据的访问,保证数据的安全。参数(Parameters)集合提供了类型检测和长度检测,输入的内容将被当作文本值来对待,通过参数可以将非法字符过滤掉,数据库不会执行包含在其中的代码。此方法是防范SQL注入攻击的有效方法之一。另外,使用参数集方式还有一个额外的好处:可以严格限定输入的类型和长度,如果输入型超出范围将会触发异常。以
您可能关注的文档
最近下载
- 最新北师大版小学数学六年级上册教案(全册)—含有教学反思.docx VIP
- 2025年沪教版五年级数学上册月考考试卷附答案.docx VIP
- 评标专家考试题库(共200题).docx VIP
- 2025年中国四氯化锆项目投资计划书.docx
- (大单元整体教学)第五单元 圆单元分析教学设计 人教版 六年级上册数学.docx VIP
- 企业安全生产综合应急预案.doc VIP
- 五年级上册数学人教版 第二单元位置单元测试(含答案).docx VIP
- 智能车间、智能工厂、智能制造的三个层级说明.docx VIP
- 05s502图集阀门井图集 .docx VIP
- 深挖一日活动契机,促进幼儿德育教育 论文.docx VIP
文档评论(0)