asp.net网站安全从小做起与防范小结
作者:
我是做asp.net网站开发的,QQ群里一个网友的站被挂马了。他说让我写点安全方面的文章。我就介绍下我的经验吧,各位大牛不要拿砖头砸我。。。
以下都以ASP.NET开发网站为例。
1、sql注入漏洞。
解决办法:使用存储过程,参数不要用字符串拼接。简单改进办法:使用SqlHelper和OledbHelper
2、跨站脚本漏洞
解决办法:“默认禁止,显式允许”的策略。具体参考:从客户端检测到有潜在危险的Request.Form值,禁止提交html标记(<>等被转义成<)
3、上传漏洞
解决办法:禁止上传目录的运行权限。只给读取权限。另外要禁止上传非法类型文件。不仅仅是aspx类型,包括很多,甚至htm、html类型文件也不应该直接上传保存。
4、数据库连接帐号,尽量使用最低权限的帐号。一定不要给管理员权限。
假如被黑客得知了数据库的密码。
那我们就可以执行任意系统命令了。
例如:xp_cmdshell 'dir c:\'
另外还有
tasklist
taskkill
pslist
pskill
net user
net user guest /active:yes
net user hack hack /add
net user hack /del
net localgruop administrators hack /add
query user
logoff 1
这些命令是不是很恐怖?呵呵。所以一定不要给web数据库连接帐号管理权限。
5、用户登录。这里不要把用户标识明文存储在cookie里,以用来标识用户是否登录。因为cookie是可以被修改的。请看这里的修改cookie,冒充其他用户。nc httpwatch使用视频教程,用微软的Forms窗体身份验证和角色一般情况都够用了。
6、如果网站程序中用到读写文件,一定要慎重,因为读取的操作很可能被黑客利用,例如用一个查看图片的aspx文件读取web.config,用一个生产模板的功能生成木马。
7、充分利用验证码。用户登录、评论等等可能会被提交垃圾信息的地方,都要使用验证码,而且要有一个安全的验证码。才能防止被暴力破解,防止网站充满垃圾数据。
8、代码要严谨,修改用户资料、修改用户数据都要跟用户关联起来,比如update news set title='新的标题' where id=新闻编号,这里还要加一个限制:userid=用户编号,这样可以防止一个人修改别人的新闻。
9、关闭web.config中的错误显示。<customErrors mode="RemoteOnly" defaultRedirect="404.aspx"></customErrors>
以上是程序方面的安全问题,想到哪里就写到哪里。没有系统的整理。
另外顺便提提服务器安全问题。
1、开启windows防火墙,关闭不用的端口。这点是最重要的。就是说你提供的服务越少,你的服务器就越安全。
2、设置安全的密码。复杂度要达到一定强度。定期修改密码。密码不要泄露给别人,包括机房管理员。如果必要告诉机房人员,待机房人员用完密码以后立刻改掉。
3、安装ARP防火墙。机房里ARP病毒非常多,如果中了ARP病毒,轻者浏览网站不正常,可能有木马跟随。严重的就整个网站、机房都断网了。
4、适当的安装杀毒软件。(诺顿、麦咖啡等)
5、IIS关闭不用的服务,例如asp支持,关闭不用的服务:ftp,smtp,pop3等等,修改网站根目录。设置目录权限。
6、针对各种攻击,有不同的对策,例如cc攻击。曾经遇到一次,深圳那边有5台连续IP的机器对我的一个视频站发动CC攻击,导致网站打开非常的慢,开始我们还不知道是被攻击,以为程序有漏洞,不停的找程序的问题。后来通过服务器安全管理软件,查出是这些IP在作怪,通过站长屏蔽IP访问的几种方法中提到的“本地安全策略”方法屏蔽掉这5个IP以后服务器恢复正常,网站恢复了往日的速度。
常用命令:iisapp -a,netstat -nao,tasklist,telnet xxx.xxx.xxx.xxx 端口
7、远程管理软件不要用默认端口,虽然密码被暴力破解和猜到的可能很小,但是总是有无聊的人尝试。造成日志里一堆垃圾信息。修改端口以后就没有人尝试破解密码了。因为他跟不知道这个端口是做什么的。谈到这里,我想起,不用的服务要关闭,那么用的服务器就要开启吗?那肯定是要启动的,不启动谁都用不了了,这里可以做一个限制,比如我的smtp服务只提供本机使用,那么我从防火墙里把25端口关闭,如果我的SQL SERVER只是供本机使用的。那么我也从防火墙里吧1433端口关闭。这样外部无法连接,自然也不存在暴力破解数据库密码了。windows防火墙还可以针对某一个IP开放某个端口。还是比较强大的。
以上乱七八糟的谈了一堆,希望对站长和程序员们有所帮助,大家可以加我QQ:4111852交流。我非常的欢迎。
最后说一下那个网友被挂马的解决建议:
1、备份好数据库、其他数据。
2、把所有程序、包括目录全部删除,以确保没有文件被留后门。
3、如果有可能,检查服务器安全,确保服务器没有被建立后门,例如超级帐号、安装了后门木马。这样的话,你怎么修改你的程序都没用,人家随时可以修改你的程序。
4、另一个网友提到的办法,上传一个静态文件test.html,访问一下看看,是不是也有木马以排除网络问题。
5、如果4中,确认不是网络问题,那就是文件被挂马了,全部程序删除,上传自己的安全的备份,恢复数据,检查数据库,确保木马不在数据库中。
6、查看IIS日志,看谁登录过后台,参考:iis日志分析视频教程
思路特别乱,大家将就看一下吧
1、sql注入漏洞。
解决办法:使用存储过程,参数不要用字符串拼接。简单改进办法:使用SqlHelper和OledbHelper
2、跨站脚本漏洞
解决办法:“默认禁止,显式允许”的策略。具体参考:从客户端检测到有潜在危险的Request.Form值,禁止提交html标记(<>等被转义成<)
3、上传漏洞
解决办法:禁止上传目录的运行权限。只给读取权限。另外要禁止上传非法类型文件。不仅仅是aspx类型,包括很多,甚至htm、html类型文件也不应该直接上传保存。
4、数据库连接帐号,尽量使用最低权限的帐号。一定不要给管理员权限。
假如被黑客得知了数据库的密码。
那我们就可以执行任意系统命令了。
例如:xp_cmdshell 'dir c:\'
另外还有
tasklist
taskkill
pslist
pskill
net user
net user guest /active:yes
net user hack hack /add
net user hack /del
net localgruop administrators hack /add
query user
logoff 1
这些命令是不是很恐怖?呵呵。所以一定不要给web数据库连接帐号管理权限。
5、用户登录。这里不要把用户标识明文存储在cookie里,以用来标识用户是否登录。因为cookie是可以被修改的。请看这里的修改cookie,冒充其他用户。nc httpwatch使用视频教程,用微软的Forms窗体身份验证和角色一般情况都够用了。
6、如果网站程序中用到读写文件,一定要慎重,因为读取的操作很可能被黑客利用,例如用一个查看图片的aspx文件读取web.config,用一个生产模板的功能生成木马。
7、充分利用验证码。用户登录、评论等等可能会被提交垃圾信息的地方,都要使用验证码,而且要有一个安全的验证码。才能防止被暴力破解,防止网站充满垃圾数据。
8、代码要严谨,修改用户资料、修改用户数据都要跟用户关联起来,比如update news set title='新的标题' where id=新闻编号,这里还要加一个限制:userid=用户编号,这样可以防止一个人修改别人的新闻。
9、关闭web.config中的错误显示。<customErrors mode="RemoteOnly" defaultRedirect="404.aspx"></customErrors>
以上是程序方面的安全问题,想到哪里就写到哪里。没有系统的整理。
另外顺便提提服务器安全问题。
1、开启windows防火墙,关闭不用的端口。这点是最重要的。就是说你提供的服务越少,你的服务器就越安全。
2、设置安全的密码。复杂度要达到一定强度。定期修改密码。密码不要泄露给别人,包括机房管理员。如果必要告诉机房人员,待机房人员用完密码以后立刻改掉。
3、安装ARP防火墙。机房里ARP病毒非常多,如果中了ARP病毒,轻者浏览网站不正常,可能有木马跟随。严重的就整个网站、机房都断网了。
4、适当的安装杀毒软件。(诺顿、麦咖啡等)
5、IIS关闭不用的服务,例如asp支持,关闭不用的服务:ftp,smtp,pop3等等,修改网站根目录。设置目录权限。
6、针对各种攻击,有不同的对策,例如cc攻击。曾经遇到一次,深圳那边有5台连续IP的机器对我的一个视频站发动CC攻击,导致网站打开非常的慢,开始我们还不知道是被攻击,以为程序有漏洞,不停的找程序的问题。后来通过服务器安全管理软件,查出是这些IP在作怪,通过站长屏蔽IP访问的几种方法中提到的“本地安全策略”方法屏蔽掉这5个IP以后服务器恢复正常,网站恢复了往日的速度。
常用命令:iisapp -a,netstat -nao,tasklist,telnet xxx.xxx.xxx.xxx 端口
7、远程管理软件不要用默认端口,虽然密码被暴力破解和猜到的可能很小,但是总是有无聊的人尝试。造成日志里一堆垃圾信息。修改端口以后就没有人尝试破解密码了。因为他跟不知道这个端口是做什么的。谈到这里,我想起,不用的服务要关闭,那么用的服务器就要开启吗?那肯定是要启动的,不启动谁都用不了了,这里可以做一个限制,比如我的smtp服务只提供本机使用,那么我从防火墙里把25端口关闭,如果我的SQL SERVER只是供本机使用的。那么我也从防火墙里吧1433端口关闭。这样外部无法连接,自然也不存在暴力破解数据库密码了。windows防火墙还可以针对某一个IP开放某个端口。还是比较强大的。
以上乱七八糟的谈了一堆,希望对站长和程序员们有所帮助,大家可以加我QQ:4111852交流。我非常的欢迎。
最后说一下那个网友被挂马的解决建议:
1、备份好数据库、其他数据。
2、把所有程序、包括目录全部删除,以确保没有文件被留后门。
3、如果有可能,检查服务器安全,确保服务器没有被建立后门,例如超级帐号、安装了后门木马。这样的话,你怎么修改你的程序都没用,人家随时可以修改你的程序。
4、另一个网友提到的办法,上传一个静态文件test.html,访问一下看看,是不是也有木马以排除网络问题。
5、如果4中,确认不是网络问题,那就是文件被挂马了,全部程序删除,上传自己的安全的备份,恢复数据,检查数据库,确保木马不在数据库中。
6、查看IIS日志,看谁登录过后台,参考:iis日志分析视频教程
思路特别乱,大家将就看一下吧
您可能感兴趣的文章:
- 入侵ASP.net网站的经验附利用代码
- ASP.NET 网站开发中常用到的广告效果代码
- asp.net网站的404错误页面的正确设置方法
- asp.net B2B网站对接支付宝接口
- ASP.net(C#)从其他网站抓取内容并截取有用信息的实现代码
- ASP.NET网站使用Kindeditor富文本编辑器配置步骤
- asp.net获取网站目录物理路径示例
- iis6网站属性没有asp.net选项卡的解决办法
- ASP.NET网站实时显示时间的方法
- VS2010发布Web网站技术攻略
- ASP.NET MVC5网站开发用户登录、注销(五)
- vs2010制作简单的asp.net网站
- ASP.NET编程获取网站根目录方法小结
- VS2010制作第一个简单网站