asp.net网站安全从小做起与防范小结
2023-06-13 09:14:02 时间
以下都以ASP.NET开发网站为例。
1、sql注入漏洞。
解决办法:使用存储过程,参数不要用字符串拼接。简单改进办法:使用SqlHelper和OledbHelper
2、跨站脚本漏洞
解决办法:“默认禁止,显式允许”的策略。具体参考:从客户端检测到有潜在危险的Request.Form值,禁止提交html标记(<>等被转义成<)
3、上传漏洞
解决办法:禁止上传目录的运行权限。只给读取权限。另外要禁止上传非法类型文件。不仅仅是aspx类型,包括很多,甚至htm、html类型文件也不应该直接上传保存。
4、数据库连接帐号,尽量使用最低权限的帐号。一定不要给管理员权限。
假如被黑客得知了数据库的密码。
那我们就可以执行任意系统命令了。
例如:xp_cmdshell"dirc:\"
另外还有
tasklist
taskkill
pslist
pskill
netuser
netuserguest/active:yes
netuserhackhack/add
netuserhack/del
netlocalgruopadministratorshack/add
queryuser
logoff1
这些命令是不是很恐怖?呵呵。所以一定不要给web数据库连接帐号管理权限。
5、用户登录。这里不要把用户标识明文存储在cookie里,以用来标识用户是否登录。因为cookie是可以被修改的。请看这里的修改cookie,冒充其他用户。nchttpwatch使用视频教程,用微软的Forms窗体身份验证和角色一般情况都够用了。
6、如果网站程序中用到读写文件,一定要慎重,因为读取的操作很可能被黑客利用,例如用一个查看图片的aspx文件读取web.config,用一个生产模板的功能生成木马。
7、充分利用验证码。用户登录、评论等等可能会被提交垃圾信息的地方,都要使用验证码,而且要有一个安全的验证码。才能防止被暴力破解,防止网站充满垃圾数据。
8、代码要严谨,修改用户资料、修改用户数据都要跟用户关联起来,比如updatenewssettitle="新的标题"whereid=新闻编号,这里还要加一个限制:userid=用户编号,这样可以防止一个人修改别人的新闻。
9、关闭web.config中的错误显示。<customErrorsmode="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,telnetxxx.xxx.xxx.xxx端口
7、远程管理软件不要用默认端口,虽然密码被暴力破解和猜到的可能很小,但是总是有无聊的人尝试。造成日志里一堆垃圾信息。修改端口以后就没有人尝试破解密码了。因为他跟不知道这个端口是做什么的。谈到这里,我想起,不用的服务要关闭,那么用的服务器就要开启吗?那肯定是要启动的,不启动谁都用不了了,这里可以做一个限制,比如我的smtp服务只提供本机使用,那么我从防火墙里把25端口关闭,如果我的SQLSERVER只是供本机使用的。那么我也从防火墙里吧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"dirc:\"
另外还有
tasklist
taskkill
pslist
pskill
netuser
netuserguest/active:yes
netuserhackhack/add
netuserhack/del
netlocalgruopadministratorshack/add
queryuser
logoff1
这些命令是不是很恐怖?呵呵。所以一定不要给web数据库连接帐号管理权限。
5、用户登录。这里不要把用户标识明文存储在cookie里,以用来标识用户是否登录。因为cookie是可以被修改的。请看这里的修改cookie,冒充其他用户。nchttpwatch使用视频教程,用微软的Forms窗体身份验证和角色一般情况都够用了。
6、如果网站程序中用到读写文件,一定要慎重,因为读取的操作很可能被黑客利用,例如用一个查看图片的aspx文件读取web.config,用一个生产模板的功能生成木马。
7、充分利用验证码。用户登录、评论等等可能会被提交垃圾信息的地方,都要使用验证码,而且要有一个安全的验证码。才能防止被暴力破解,防止网站充满垃圾数据。
8、代码要严谨,修改用户资料、修改用户数据都要跟用户关联起来,比如updatenewssettitle="新的标题"whereid=新闻编号,这里还要加一个限制:userid=用户编号,这样可以防止一个人修改别人的新闻。
9、关闭web.config中的错误显示。<customErrorsmode="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,telnetxxx.xxx.xxx.xxx端口
7、远程管理软件不要用默认端口,虽然密码被暴力破解和猜到的可能很小,但是总是有无聊的人尝试。造成日志里一堆垃圾信息。修改端口以后就没有人尝试破解密码了。因为他跟不知道这个端口是做什么的。谈到这里,我想起,不用的服务要关闭,那么用的服务器就要开启吗?那肯定是要启动的,不启动谁都用不了了,这里可以做一个限制,比如我的smtp服务只提供本机使用,那么我从防火墙里把25端口关闭,如果我的SQLSERVER只是供本机使用的。那么我也从防火墙里吧1433端口关闭。这样外部无法连接,自然也不存在暴力破解数据库密码了。windows防火墙还可以针对某一个IP开放某个端口。还是比较强大的。
以上乱七八糟的谈了一堆,希望对站长和程序员们有所帮助,大家可以加我QQ:4111852交流。我非常的欢迎。
最后说一下那个网友被挂马的解决建议:
1、备份好数据库、其他数据。
2、把所有程序、包括目录全部删除,以确保没有文件被留后门。
3、如果有可能,检查服务器安全,确保服务器没有被建立后门,例如超级帐号、安装了后门木马。这样的话,你怎么修改你的程序都没用,人家随时可以修改你的程序。
4、另一个网友提到的办法,上传一个静态文件test.html,访问一下看看,是不是也有木马以排除网络问题。
5、如果4中,确认不是网络问题,那就是文件被挂马了,全部程序删除,上传自己的安全的备份,恢复数据,检查数据库,确保木马不在数据库中。
6、查看IIS日志,看谁登录过后台,参考:iis日志分析视频教程
思路特别乱,大家将就看一下吧
相关文章
- [.NET控件]Telerik RadControls for ASP.NET AJAX 2008 Q1 net 2.0 Web.UI「建议收藏」
- ASP.NET_.NET
- .Net Core3.1 SignalR for WPF Asp.net
- .net 温故知新:【10】.NET ORM框架EFCore使用入门之CodeFirs、DBFirst
- 使用Docker快速部署一个Net项目
- .netLinux下部署ASP.NET环境指南(linux部署asp)
- asp.net(c#)RSS功能实现代码
- asp.net中将表单提交到另一页Code-Behind(代码和html在不同的页面)
- asp.net点击按钮提交后使按钮变灰不可用
- Win2003+ASP.NET虚拟主机安全设置图文教程
- ASP.NET缓存方法分析和实践示例
- 如何限制asp.net中上传文件的大小的代码
- 答你所问.NET小常识方便学习asp.net的朋友
- .Net中导出数据到Excel(asp.net和winform程序中)
- PHP和.net中des加解密的实现方法
- Asp.net之TextBox只允许输入数字的方法总结
- asp.net实现上传文件显示本地绝对路径的实例代码
- ASP.NET中DataTable与DataSet之间的转换示例
- asp.net中CSharpThinking扩展方法分析
- asp.net中SqlCacheDependency缓存技术概述