Abp框架Web站点的安全性提升

这篇具有很好参考价值的文章主要介绍了Abp框架Web站点的安全性提升。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文将从GB/T 22239《信息安全技术 网络安全等级保护基本要求》规定的安全计算环境中解读、摘要若干安全要求,结合Abp框架,对站点进行安全升级。

【身份鉴别】应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。

解决方案

  1. 设置密码最小长度

  2. 密码由数字、字母和特殊字符组合而成

  3. 设置密码每隔90天需要更换一次

实施

在AbpSettings表中配置开启PasswordComplexity密码复杂度校验,设置密码最小长度为7位

Abp框架Web站点的安全性提升

配置密码强制过期策略,参考用Abp实现找回密码和密码强制过期策略

【身份鉴别】应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。

解决方案

  1. 登录后无操作15分钟,系统自动退出登录状态。

  2. 连续登录失败5次后,锁定账户15分钟

实施

在WebCoreModule中,将Jwt Bearer Token的过期时间从默认的1天改为15分钟

Abp框架Web站点的安全性提升

配置用户登录失败锁定
默认将新增用户的IsLockoutEnabled打开

public User()
{
    this.IsLockoutEnabled = true;
}

在AbpSettings表中配置开启用户登录失败锁定,并配置失败尝试次数和锁定时长

Abp框架Web站点的安全性提升

【身份鉴别】应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。

解决方案

采用两种以上组合的鉴别技术对用户进行身份鉴别,采用用户名+手机短信验证码方式登录

实施

对Abp框架改造,加入两步验证功能,参考用Abp实现两步验证(Two-Factor Authentication,2FA)登录(一):认证模块

【访问控制】应对登录的用户分配账户和权限;并授予管理用户所需的最小权限,实现管理用户的权限分离。

解决方案

  1. 删除或者禁用默认账户,

  2. 禁用超级管理员,

  3. 设置独立的审计管理员、安全管理员等。

实施

更改AbpPermissions,AbpRoles,AbpUserRoles表,合理安排用户角色的权限配置。

【入侵防范】应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制。

解决方案

限制管理员的登录地址范围,仅允许特定IP进行登录管理。

实施

使用IP白名单限制管理员账户登录。

AppSettingNames.cs:

public static class AppSettingNames
{
    ...
    public const string AdminIpAddressWhitelist = "CAH.AdminIpAddressWhitelist";
}

AppSettingProvider.cs:

public class AppSettingProvider : SettingProvider
{
    public override IEnumerable<SettingDefinition> GetSettingDefinitions(SettingDefinitionProviderContext context)
    {
        return new[]
        {
            ...
            new SettingDefinition(AppSettingNames.AdminIpAddressWhitelist, "127.0.0.1,::1,localhost,0.0.0.0", scopes: SettingScopes.Application | SettingScopes.Tenant | SettingScopes.User, isVisibleToClients: true),
        };
    }
}

在身份验证终节点方法Authenticate中,添加对管理员账户IP白名单的校验:


var ipAddress = this._logInManager.ClientInfoProvider.ClientIpAddress;
var adminIpAddressWhitelist = await SettingManager.GetSettingValueForTenantAsync(AppSettingNames.AdminIpAddressWhitelist, loginResult.Tenant.Id);
var IpCheckRequired = false;
var roles = await userManager.GetRolesAsync(loginResult.User);
if (roles.Contains(StaticRoleNames.Tenants.Admin) || roles.Contains(StaticRoleNames.Tenants.Super))
{
    IpCheckRequired = true;
}
if (!string.IsNullOrEmpty(adminIpAddressWhitelist))
{
    if (!adminIpAddressWhitelist.Split(',').Contains(ipAddress) && IpCheckRequired)
    {
        throw new UserFriendlyException("IP不在允许的列表中");
    }
}


【入侵防范】应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求。

解决方案

  1. 对上传接口进行文件格式限制转义处理。
  2. 对系统配置防范XSS跨站脚本攻击

实施

文件系统中配置仅允许业务相关的文件类型上传

 "FileStorage": {
    ...
    "AllowOnlyConfiguredFileExtensions": true,
    "FileExtensionsConfiguration": ".jpg,.png",
    }

配置上传文本中高危脚本过滤,参考[Asp.Net Core] 网站中的XSS跨站脚本攻击和防范

【安全审计】应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等

解决方案

审计日志存储6个月以上。

实施

对AbpAuditLogs中的数据定期异地备份,保存时长至少6个月以上。

【数据完整性、保密性】应采用校验技术或密码技术保证重要数据在存储过程中的完整性以及保密性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等

解决方案

  1. 采用AES加密对身份证号码等重要数据进行加密后再存储
  2. 传输报文中对敏感数据进行脱敏处理
  3. 页面中对敏感数据进行脱敏处理

实施

使用加密转换器对身份证号字段进行加密存储,参考在EF Core中为数据表按列加密存储

modelBuilder.Entity<User>().Property(c => c.IdentificationNumber).HasConversion<EncryptionConverter<string>>();

修改User到UserDto的字段映射,对手机号,身份证号和邮箱地址进行正则替换。

public UserMapProfile()
{
    CreateMap<UserDto, User>();
    CreateMap<UserDto, User>()
        .ForMember(x => x.Roles, opt => opt.Ignore())
        .ForMember(x => x.CreationTime, opt => opt.Ignore())
        .ForMember(x => x.IdentificationNumber, opt => opt.Ignore())
        .ForMember(x => x.EmailAddress, opt => opt.Ignore())
        .ForMember(x => x.PhoneNumber, opt => opt.Ignore());

    CreateMap<User, UserDto>()
            .ForMember(
                dest => dest.PhoneNumber,
                opt => opt.MapFrom(
                    src => Regex.Replace(src.PhoneNumber, "(\\d{3})\\d{4}(\\d{4})", "$1****$2")))

            .ForMember(
                dest => dest.IdentificationNumber,
                opt => opt.MapFrom(
                    src => Regex.Replace(src.IdentificationNumber, "(?<=\\w{3})\\w(?=\\w{4})", "*")))


            .ForMember(
                dest => dest.EmailAddress,
                opt => opt.MapFrom(
                    src => Regex.Replace(src.EmailAddress, "(^\\w)[^@]*(@.*$)", "$1****$2")));



    CreateMap<CreateUserDto, User>();
    CreateMap<CreateUserDto, User>().ForMember(x => x.Roles, opt => opt.Ignore());
}

页面中修改更新方式

Abp框架Web站点的安全性提升

【数据备份恢复】应提供重要数据的本地数据备份与恢复功能

解决方案

在本地定期备份配置数据、业务数据。根据实际业务需求定期对备份数据进行恢复测试,保存相关的恢复测试记录。

实施

项目按照SQL server完全备份指南进行备份作业,

由运维人员定期对业务数据进行异地备份,根据实际业务需求定期对备份数据进行恢复测试,并对恢复测试进行记录文章来源地址https://www.toymoban.com/news/detail-417418.html

到了这里,关于Abp框架Web站点的安全性提升的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • iOS代码加固与保护方法详解 - 提升iOS应用安全性的关键步骤

    摘要:作为一名从事iOS开发多年的技术博主,长期以来我都没有重视代码加密和加固。然而,最近了解到使用IPA Guard工具可以对iOS应用进行混淆保护,我开始重新审视iOS应用的安全性问题。本文将详细介绍如何使用IPA Guard工具进行代码加固和保护,以提高iOS应用的安全性和抵

    2024年02月10日
    浏览(54)
  • 机器人硬件在环仿真:解决实体开发与测试挑战,提升效率与安全性

    工业机器人具备出色的灵活性和运动能力,广泛应用于工业制造领域。它们可以完成装配、焊接、喷涂、搬运、加工、品质检测等任务,提高了生产效率,保证了产品质量。此外,在医疗领域也有辅助手术等特殊应用,展现了其在多个领域的重要作用。针对工业机器人控制系

    2024年02月07日
    浏览(42)
  • web系统设计安全性基本要求

    身份鉴别 独立的登录模块:为社会用户和平台运营管理用户提供独立的登录地址、登录界面和身份认证模块,通过防火墙等设备严格限制能够登录WEB应用的用户地址、身份; 双因素认证: 平台运营管理人员:采用用户名/口令+数字证书方式进行身份鉴别; 商户:采用用户名

    2024年01月24日
    浏览(51)
  • 面试题 -- 客户端安全性和框架设计

    1) 网络数据传输(敏感数据[账号密码消费数据银行卡账号],不能明文发送) 2) 协议的问题(自定义协议) 2) 本地文件存储(游戏的存档) 3) 源代码(混淆) 1) SIP(Session Initiation Protocol),会话发起协议 2) SIP 是建立VOIP连接的IETF标准,IETF是全球互联网最具权威的技

    2024年02月15日
    浏览(47)
  • C++中的网络编程和安全性:实现安全的Web应用程序和网络应用程序

    作者:禅与计算机程序设计艺术 《67. C++中的网络编程和安全性:实现安全的Web应用程序和网络应用程序》 1.1. 背景介绍 随着互联网的快速发展,网络应用程序在人们的生活和工作中扮演着越来越重要的角色,网络编程和安全性也成为了现代应用程序的重要组成部分。在网络

    2024年02月16日
    浏览(52)
  • blog-engine-07-gatsby 建极速网站和应用程序 基于React的最佳框架,具备性能、可扩展性和安全性。

    blog-engine-01-常见博客引擎 jekyll/hugo/Hexo/Pelican/Gatsby/VuePress/Nuxt.js/Middleman 对比 blog-engine-02-通过博客引擎 jekyll 构建 github pages 博客实战笔记 blog-engine-02-博客引擎jekyll-jekyll 博客引擎介绍 blog-engine-02-博客引擎jekyll-jekyll 如何在 windows 环境安装,官方文档 blog-engine-02-博客引擎jekyll

    2024年03月27日
    浏览(98)
  • 加密数据安全性的两大安全护盾-前向安全性与后向安全性详解

    在数字安全的世界里,加密技术是用来保护数据不被未经授权访问的重要机制。然而,即使使用了最强的加密算法,也不能保证永远是安全的。攻击者可能会在未来某个时间点获得了解密密钥,从而能够解密拦截的密文。为了解决这个问题,密码学引入了前向安全性(Forwar

    2024年02月04日
    浏览(68)
  • 云计算:云计算安全性有哪些?_云计算技术的安全性,这些知识你必须拿下

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新网络安全全套学习资料》

    2024年04月23日
    浏览(47)
  • 什么是前端安全性(front-end security)?列举一些前端安全性的最佳实践

    聚沙成塔·每天进步一点点 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而

    2024年02月05日
    浏览(56)
  • 《网络安全0-100》低层协议安全性

    对于网络层,IP协议是其中一个非常重要的协议。网络层的IP地址相当于数据链路层的Mac地址。协议字段如下,每行4字节,总共4*5=20字节。   IP协议安全性:IP协议不能保证数据就是从数据包中给定的源地址发出的,你绝对不能靠对源地址的有效性检验来判断数据包的好坏。

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包