B/S开发框架Web安全问题及防范规范之挂马和WebShell

Web站点为什么会遭受攻击?是为了恶作剧?损害企业名誉?免费浏览收费内容?盗窃用户隐私信息?获取用户账号谋取私利?总之攻击方式层出不穷,作为B/S开发框架来说,帮助开发者做好解决安全问题也是刻不容缓的,本篇文章来告诉大家怎么防范挂马和WebShell攻击。

适用范围

Web网站

攻击原理

Webshell是攻击者在被攻击网站上植入的aspx、php、jsp程序文件,攻击者在入侵了一个web系统后,常常在将这些aspx、php、jsp木马后门文件放置在web服务器的web目录中,与正常的网站文件混在一起。然后攻击者就可以通过正常的web访问方式,访问其植入aspx、php、jsp程序木马后门控制web服务器,包括创建、修改、删除文件,上传下载文件,查看数据库,执行任意程序命令等。

解决方案

应用程序处理

1、B/S开发框架处理SQL注入问题

2、B/S开发框架采用白名单的形式验证文件上传类型

代码如下:

/// <summary>
/// 上传文件信息
/// </summary>
public class UploadFileInfo
{
    /// <summary>
    /// 上传结果(true 成功  false 失败)
    /// </summary>
    public bool Result
    {
        get;
        set;
    }
    /// <summary>
    /// 上传说明
    /// </summary>
    public string ResultMsg
    {
        get;
        set;
    }
    /// <summary>
    /// 文件名称
    /// </summary>
    public string FileName
    {
        get;
        set;
    }
    /// <summary>
    /// 修改后文件名称
    /// </summary>
    public string NewFileName
    {
        get;
        set;
    }
    /// <summary>
    /// 文件路径
    /// </summary>
    public string FilePath
    {
        get;
        set;
    }
    /// <summary>
    /// 文件扩展名
    /// </summary>
    public string FileExtension
    {
        get;
        set;
    }
    /// <summary>
    /// 文件大小
    /// </summary>
    public int FileSize
    {
        get;
        set;
    }
}

/// <summary>
/// 文件上传帮助类
/// </summary>
public static class FileUploadHelper
{
    /// <summary>
    /// 文件上传
    /// </summary>
    /// <param name="postedFile">上传的文件</param>
    /// <param name="format">允许上传的文件格式</param>
    /// <param name="maxSize"></param>
    /// <param name="filePath">保存路径</param>
    /// <param name="savefileName">保存文件名(不含扩展名)</param>
    /// <returns></returns>
    public static UploadFileInfo Upload(HttpPostedFile postedFile, string format, int maxSize, string filePath, string saveFileName)
    {
        UploadFileInfo fileInfo = new UploadFileInfo();
        fileInfo.Result = true;
        fileInfo.FileName = Path.GetFileName(postedFile.FileName);
        fileInfo.FileExtension = Path.GetExtension(fileInfo.FileName);
        fileInfo.FileSize = postedFile.ContentLength;

        saveFileName = saveFileName + fileInfo.FileExtension;
        //验证上传文件的格式
        if (format.IndexOf(fileInfo.FileExtension) == -1)
        {
            fileInfo.Result = false;
            fileInfo.ResultMsg = "上传失败,上传文件格式不合法";
            return fileInfo;
        }
        if (fileInfo.FileSize > maxSize)
        {
            fileInfo.Result = false;
            fileInfo.ResultMsg = "上传失败,上传文件大小超出限制";
            return fileInfo;
        }
        try
        {
            string savePath = HttpContext.Current.Request.MapPath(filePath);
            //判断物理路径是否存在,若不存在则创建路径
            DirectoryInfo dir = new DirectoryInfo(savePath);
            if (!dir.Exists)
            {
                dir.Create();
            }
            fileInfo.FilePath = filePath + saveFileName;
            postedFile.SaveAs(savePath + saveFileName);
        }
        catch
        {
            fileInfo.Result = false;
            fileInfo.ResultMsg = "上传失败,发生异常";
            return fileInfo;
        }
        return fileInfo;
    }
}

  


管理处理

web开发框架基于Windows 2008下使用IIS7部署的web服务器,对IIS7的各项配置进行分析,以提高基于此环境下的WEB服务器的安全性。
1磁盘及文件夹设置
为提高系统下数据的安全性,服务器文件格式一律划分为NTFS格式,这样可以更好的配置磁盘的各种访问权限。一般情况下,各个分区都只赋予administrators和system权限,删除其他用户的访问权限,以保证拒绝任何未授权用户的访问。
2为站点建立相应的用户。
B/S开发框架软件系统的每个站点都使用专门建立的用户来进行权限分配,可以保证各个站点间是独立的,被隔离开的,不会互相影响的。
此类用户包含为站点建立用于匿名访问的用户和为用于应用程序池运行的用户。匿名访问用户属于GUEST组,应用程序池运行用户属于IIS_IUSRS组。
操作方法:右键点击“我的电脑”中,选择“管理”。选择“本地用户和组”窗格中,右键单击“用户”,选择“新用户”。在“新用户”对话框中,设置“用户名”、“密码”并勾选“用户不能更改密码”、“密码永不过期”,然后单击“确定”。
选择创建好的用户,右键单击用户名,选择属性,设置用户到相应的组即可。
3站点使用独立的应用程序池
每个站点使用的应用程序池应该是独立的,以便资源的合理分配,并且都以独立的标识账户运行,在出现异常情况时也不会互相影响。
操作方法:
(1)打开“IIS信息服务管理器”,右键单击“应用程序池”,选择“新建应用程序池”,填上名称,确定。
(2)单击此应用程序池,在操作栏中选择“高级设置”,将“进程模型标识”选择为之前创建的应用程序池运行用户。
(3)单击需要配置的网站,在操作栏中选择高级设置,应用程序池选择为上一步创建的应用程序池。
4启用匿名身份验证
B/S开发框架网站目录下所有文件启用匿名身份验证,便于用户可以匿名访问网站,并将之前建立的用户分配到该网站。
操作方法:
(1)在功能视图中双击“身份验证”,右键单击“匿名身份验证”,选择“启用”。
(2)单击该网站,在功能视图中双击“身份验证”,右键单击“匿名身份验证”,选择“编辑”匿名身份验证,并选择“匿名用户标识”为之前建立的用于匿名访问的用户。
注:需要赋予该匿名用户对此网站目录及文件相应的访问权限。
5启用基本身份验证
为保护指定目录不被匿名用户访问,需要启用基本身份验证,此项需要关闭指定目录的匿名用户访问权限。
操作方法:
(1)在功能视图中选择“身份验证”,右键单击“匿名身份验证”,选择“禁用”匿名身份验证。
(2)在功能视图中双击“身份验证”,右键单击“基本身份验证”,选择“启用”并编辑基本身份验证,为基本身份认证配置拥有访问权限的用户。
6取消上传目录的执行权限
网站程序正常运行所需的权限并不是完全一样的,可以在IIS中对网站目录进行针对设置,一般目录设置为读取,满足访问、浏览即可;需要上传文件的目录,在设置了写入权限后,可以将目录的执行权限去掉。这样即使上传了木马文件在此目录,也是无法执行的。
操作方法:选中网站的上传文件夹,选择“处理程序映射”,“编辑功能权限”,取消脚本和执行功能。
7基于IP地址或域名授予访问权限和拒绝访问。
在IIS 7中,默认情况下所有Internet协议(IP)地址、计算机和域都可以访问我们的站点。为了增强安全性,我们可以创建向所有IP地址(默认设置)、特定IP地址、IP地址范围或特定域授予访问权限的允许规则,以此来限制对站点的访问。
注:IP地址限制只适用于IPv4地址。
在“功能视图”中,双击“IPv4地址和域限制”。
在“操作”窗格中,单击“添加允许条目”。
在“添加允许限制规则”对话框中,选择“特定IPv4地址”、“IPv4地址范围”或“域名”,接着添加IPv4地址、范围、掩码或域名,然后单击“确定”。
8配置url授权规则。
我们可以允许或拒绝特定计算机、计算机组或域访问服务器上的站点、应用程序、目录或文件。通过配置URL授权规则,可以配置为指定组的成员访问受限内容。
操作方法:
(1)在“功能视图中,双击“授权规则”。在“操作”窗格中,单击“添加允许规则”。
(2)在“添加允许授权规则”对话框中,可以选择“所有用户”、“所有匿名用户”、“指定的角色或用户组”、“指定的用户”其中之一。
此外,如果要进一步规定允许访问相应内容的用户、角色或组只能使用特定HTTP谓词列表,则还可以选中“将此规则应用于特定谓词”。请在对应的文本框中键入这些谓词。
9配置ISAPI和CGI限制
默认情况下,B/S开发框架的多种文件扩展名均可在Web服务器上运行,为了降低此风险,应只允许您具有的那些特定ISAPI扩展或CGI文件在Web服务器上运行。
操作方法:
(1)在“功能视图”中,双击“ISAPI和CGI限制”。在“操作”窗格中,单击“添加”。
(2)在“添加ISAPI或CGI限制”对话框的“ISAPI或CGI路径”文本框中键入该.dll或.exe文件的路径,或者单击浏览按钮(...)导航至该文件的位置。
在“描述”文本框中,键入有关限制的简要描述。
(3)选中“允许执行扩展路径”,以允许限制自动运行。如果未选中此选项,限制的状态将默认为“不允许”。以后,您可以通过选择限制并在“操作”窗格中单击“允许”来允许该限制。

物理处理

原文地址:https://www.cnblogs.com/bdft/p/10105161.html

时间: 2024-10-13 01:24:32

B/S开发框架Web安全问题及防范规范之挂马和WebShell的相关文章

力软信息化系统快速开发框架 web端+winform端

力软信息化系统快速开发框架是一套集权限管理+快速开发+动态接口+通用组件+动态UI于一体的全新.net信息化快速开发框架.力软信息化系统快速开发框架的使用,大大地缩短了开发周期,提高了软件质量,同时也降低企业对软件研发人员编码水平要求.使得软件企业减少研发的时间和成本以及提升用户体验,从而能在竞争激烈的软件行业里脱颖而出,打造出优秀的软件产品,赢得客户的信赖.同样软件工程师有一套这样的开发神器在手,开发软件效率卓越,界面炫酷,定能赢得上司的赏识,升职加薪不在话下,迎娶白富美登上人生的巅峰也指日可

【系统安全性】二、Web攻击与防范

二.Web攻击与防范 1.XSS攻击 跨站脚本攻击(Cross Site Scripting),因为简写CSS,与层叠样式表(Cascading Style Sheets)有歧义,所以取名XSS 原理:在网页中嵌入恶意脚本程序,在客户端浏览器执行(如用户输入数据转换成代码执行) 防范:输入数据HTML转义处理(主流框架默认支持) 2.注入攻击 原理:SQL伪装成HTTP请求参数 例如一个登录操作,输入帐号密码 假设后台的Sql是这样拼装的:Select * from user where use

三种常见的Web安全问题

XSS漏洞 1.XSS简介 跨站脚本(cross site script)简称为XSS,是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式. XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去,使别的用户访问都会执行相应的嵌入代码. 2.XSS攻击的危害 1.盗取用户资料,比如:登录帐号.网银帐号等 2.利用用户身份,读取.篡改.添加.删除企业敏感数据等 3.盗窃企业重要的具有商业价值的资料 4.非法转账

如何轻松防范DEDE挂马

曾经有许朋友的DEDE后台程序很容易被挂马,当然每个人都是通过一点一点积累经验,从被挂到能轻松防范,这需要一个逐渐积累的过程,任何事情都不是一蹴而就的,所以我们只要研究了方法就不会被挂马. 下面就来谈一谈具体的方法: 精简设置篇: 不需要的功能统统删除.比如不需要会员就将member文件夹删除.删除多余组件是避免被hack注射的最佳办法.将每个目录添加空的index.html,防止目录被访问. 织梦可删除目录列表:member会员功能 special专题功能 install安装程序(必删) co

用go实现web日志分析及网页挂马关键字检测

本程序主要实现网页挂马关键字检测,原理是这样的,通过定时分析用户访问的IIS web日志,对日志的里的URL进行访问,然后检索是否包含相关的关键字,有就入库,这只是go实现自动检索及入库,可以加个前端,实现加关键及报警功能 package main import (     "bufio"     "code.google.com/p/mahonia"     "fmt"     "io"     "io/iouti

Web项目开发中常见安全问题及防范

计算机程序主要就是输入数据 经过处理之后 输出结果,安全问题由此产生,凡是有输入的地方都可能带来安全风险.根据输入的数据类型,Web应用主要有数值型.字符型.文件型. 要消除风险就要对输入的数据进行检查,对于Web应用来说,检查的位置主要是前端和后端.前端检查只能防止正常状况,没法防止通过工具.程序绕开前端检查直接把数据发送给后端. 输入检查 防止输入注入型攻击.所有的输入数据都要检查,除了前端检查外,为防止使用工具.程序绕开前端检查直接把数据发送给服务器,后端也要检查所有输入数据. 依据产品文

B/S开发框架Web安全之XSS跨站入侵

Web站点为什么会遭受攻击?是为了恶作剧?损害企业名誉?免费浏览收费内容?盗窃用户隐私信息?获取用户账号谋取私利?总之攻击方式层出不穷,作为B/S开发框架来说,帮助开发者做好解决安全问题也是刻不容缓的,本篇文章来告诉大家怎么防范非法SQL注入. 适用范围 Web中 带有显式URL跳转 或 带有存储型文本框的页面. 攻击原理 1.非持久型分为反射型XSS及URL跳转: 反射型XSS恶意代码不保留在服务器上,而是通过其他形式实时通过服务器反射给普通用户: URL跳转,参数型跨站脚本,主要用于将恶意脚

web前端开发代码规范

1. 引言 对于一个多人团队来说,制定一个统一的规范是必要的,因为个性化的东西无法产生良好的聚合效果,规范化可以提高编码工作效率,使代码保持统一的风格,以便于代码整合和后期维护.本文档主要描述web项目开发中所使用的html.css.JavaScript等规范,请参与开发相关人员遵循,同时也请各位日后进行补充完善. 2. HTML/CSS规范 2.1 浏览器兼容 根据业务要求而定: 主流程测试:Chrome 30+.IE9+: 完整测试: Chrome 21.IE8+.360浏览器.微信webv

段焱--web前端开发须知规范

文件规范 1. html, css, js, images文件均归档至<系统开发规范>约定的目录中;2. html文件命名: 英文命名, 后缀.htm. 同时将对应界面稿放于同目录中, 若界面稿命名为中文, 请重命名与html文件同名, 以方便后端添加 功能时查找对应页面;3. css文件命名: 英文命名, 后缀.css. 共用base.css, 首页index.css, 其他页面依实际模块需求命名.;4. Js文件命名: 英文命名, 后缀.js. 共用common.js, 其他依实际模块需求