asp.net网站安全常见问题与防范
1:SQL 注入 2:XSS 3:CSRF 4:文件上传
1:SQL 注入 引起原因: 其实现在很多网站中都存在这种问题。就是程序中直接进行SQL语句拼接。可能有些读者不太明白。
下面通过一个登录时对用户验证来说明:
code: 验证时的sql语句: select * from where user='"+txtUsername.Text+"' and pwd='"+txtPwd.Text+"' 这是一段从数据库中查询用户,对用户名,密码验证。
看上去好象没有什么问题,但是实际这里面浅藏着问题,用户名:admin 密码: admin, select * from where user='admin' and pwd='admin' 如果用户和密码正确就可通验证。
如果我用户名:asdf' or 1=1 -- 密码:随意输入. 我们再来看语句: select * from where user=‘asdf' or 1=1 -- and pwd='' 执行后看到什么?
是不是所有记录,如果程序只是简单判断返回的条数,这种方法就可以通验证。 如果执行语句是SA用户,再通过xp_cmdshell添加系统管理员,那么这个服务器就被拿下了。
解决方法: (1):这个问题主要是由于传入特殊字符引起的我们可以在对输入的用户名密码进入过滤特殊字符处理。如
if (name.IndexOf("'") > 0 || name.IndexOf("--") > 0)
{
Helper.HelperJS.Show(this, "用户名密码存在非法字符!");
return;
}
(2):使用存储过程通过传入参数的方法可解决此类问题(注意:在存储过程中不可使用拼接实现,不然和没用存储过和是一样的)。
2:XSS(跨站脚本攻击) 引起原因: 这个也有时被人们称作HTML注入,和sql注入原理相似,也是没有特殊字符进行处理。是用户可以提交HTML标签对网站进行重新的构造。其实在默认的情况下在asp.net网页中是开启validateRequest属性的,所有HTML标签后会.NET都会验证,但这样直接把异常抛给用户,多少用户体验就不好。
解决方法: (1):通过在 Page 指令或 配置节中设置 validateRequest=false 禁用请求验证,然后我们对用户提交的数据进行HtmlEncode,编码后的就不会出现这种问题了(ASP.NET 中编码方法:Server.HtmlEncode(string))。
(2):第二种是过滤特殊字符,这种方法就不太提倡了,如果用户想输入小于号(<)也会被过滤掉.
3:CSRF(跨站点请求伪造) 引起原因:个人认为csrf在Ajax盛行的今天来说,倒是方便了,因为它可以在你不知道的情况用你的通过验证用户进行操作,所以也被称为浏览器劫持。如果你已通过某个网站的验证那么你将以你的角色对网站进行操作,比如你是管理员可以添加其它的用户到管理组,但是如果有人构造了添加管理员的链接被管理员点后也会执行相应操作.
解决方法: 在lake2的文章中也提出了。就是修改信息时添加验证码。或添加Session令牌(ASP.NET中已经提供一个自动防范的方法,就是用页面属性ViewStateUserKey.在Page_Init方法中设置其值。this.ViewStateUserKey=Session.SessionID)。
4:文件上传 引起原因: 如果你的网站使用的是在线编辑器,如FCKEditor,eWeb等等,如果没有处理好文件上传,那么上线后网站会很快的被篡改。
asp.net网站安全常见问题与防范的更多相关文章
- asp.net网站优化经验之谈
最近公司一个项目上线后,经常崩溃,于是开始重视性能问题,在网上看到了许多相关文章,整理下发了上来.以备参考. 在用ASP.NET开发网站的时候,性能是永远需要考虑和关注的问题,性能不仅仅只是程序代码执 ...
- ASP.NET 网站管理工具
ylbtech-Miscellaneos:ASP.NET 网站管理工具 1. 网站管理工具概述返回顶部 网站管理工具概述 介绍 使用网站管理工具,可以通过一个简单的 Web 界面来查看和管理网站配置. ...
- 在 Linux 上使用 Jexus + Mono 建立 Asp.Net 网站.
godaddy 买了个net空间,一点也不好用. 几个G的数据, 上传数据只有几kb , 想用 ssh 登录上去用 wget 下载,也不行 windows的主机貌似没有 ssh 功能... 后来实在忍 ...
- ASP.NET网站优化(转自一位博友的文章,写的非常好)
不修改代码就能优化ASP.NET网站性能的一些方法 阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一 ...
- 不修改代码就能优化ASP.NET网站性能的一些方法
阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一些方法用于优化ASP.NET网站性能,这些方法都是不 ...
- ASP.NET网站中获取当前虚拟目录的应用程序目录的方法(转)
[原创]ASP.NET网站中获取当前虚拟目录的应用程序目录的方法 ASP.NET网站中获取当前虚拟目录的应用程序目录的方法1.问题描述:有时候,某个网页控件会被不同目录下文件使用,此时如果该控件中有一 ...
- 搭建调用 WebService 的 ASP.NET 网站 (VS2010, C#)
[系统环境]Windows 7 / 2008r2 [软件环境]Visual Studio 2010 [开发语言]C# [感谢]本文是在 <C#开发和调用Web Service> 一文的基础 ...
- IIS 7 Web服务器上部署ASP.NET网站(转)
IIS 7 Web服务器上部署ASP.NET网站小记 摘自:http://swanmsg.blog.sohu.com/162111073.html 网上查找了很久关于iis7配置asp.net配置问题 ...
- ASP.NET 开发必备知识点(1):如何让Asp.net网站运行在自定义的Web服务器上
一.前言 大家都知道,在之前,我们Asp.net 的网站都只能部署在IIS上,并且IIS也只存在于Windows上,这样Asp.net开发的网站就难以做到跨平台.由于微软的各项技术的开源,所以微软自然 ...
随机推荐
- 用命令测试安装好的OpenStack环境
OpenStack三个节点icehouse-gre模式部署一文部署了一套OpenStack环境,接下来使用命令测试一遍. 首先要明确几个概念: 外网:可分配floating ip绑定到虚拟机,外部就可 ...
- python 邮件发送 脚本
import smtplib from email.header import Header from email.mime.text import MIMEText from_addr = 'XXX ...
- 原创翻译-值得关注的10个python语言博客
原文链接 原文链接的网页感觉网络不是很好,不容易上.我在这里就给大家做个翻译吧. 大家好,还记得我当时学习python的时候,我一直努力地寻找关于python的博客,但我发现它们的数量很少.这也是我建 ...
- HDU 1394 & ZOJ 1484 Minimum Inversion Number
(更新点查询区间) 这题重在想到,写代码很容易了..这题是利用线段树求逆序数,不按给定的顺序建树,而是有序地插入.比如每插入一个数,就统计之前插入的那些数里比他大的有多少个,这个数就是此时的逆序数,然 ...
- FreeMarker 一二事 - 静态模板结合spring展示
freemarker可以脱离web使用 前一篇文章使用了普通的方法 这回说说结合spring pom额外引入这个jar包 <dependency> <groupId>org.s ...
- Android Sdk 和ADT Eclipse安装配置步骤
由于我们之前下载的jdk版本是1.6的,所以后面的andriod sdk等版本需要相对应.安装文件我都放在云盘里面,需要的可以下载 一:如果单独安装每一个软件,先期需要下载的软件包如下: 1.JDK ...
- 十个Flex/Air疑难杂症及解决方案简略
十个Flex/Air疑难杂症及解决方案简略 转自http://blog.sban.us/40.html 最近去一家台企,对方给我出了十道“难道”:在TileList中如果選擇檔過多,會出現捲軸,當拖動 ...
- [原创]gerrit上分支操作记录(创建分支、删除分支)
Git分支对于一个项目的代码管理而言,是十分重要的! 许多久用git的朋友可能已经掌握的很牢固了,但对于一些初涉git的童鞋来说,可能还不是很熟悉. 在此,我将自己的一些操作经历做一梳理,希望能帮助到 ...
- Android中static和final用法小结
Java关键字static.final使用小结 static 1. static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是 ...
- 给 IIS Express 配置虚拟目录
使用 vs2015 打开旧项目,之前使用 iis 配置站点,然后在 vs 中附加 w3wp.exe 进行开发和调试的. 由于种种原因 iis 上配置站点各种失败. 之后发现,其实在 vs2015 中按 ...