草庐IT

办公室安全

全部标签

c# - 单例成员的线程安全使用

我有一个多个类使用的C#单例类。通过Instance访问Toggle()方法线程安全吗?如果是,根据什么假设、规则等。如果不是,为什么和我该如何解决?publicclassMyClass{privatestaticreadonlyMyClassinstance=newMyClass();publicstaticMyClassInstance{get{returninstance;}}privateintvalue=0;publicintToggle(){if(value==0){value=1;}elseif(value==1){value=0;}returnvalue;}}

c# - 什么是非线程安全?

有很多文章和讨论解释了为什么构建线程安全类是好的。据说如果多个线程访问例如同时一个领域,只能有一些不好的后果。那么,保持非线程安全代码的意义何在?我主要关注.NET,但我相信主要原因与语言无关。例如.NET静态字段不是线程安全的。如果它们默认是线程安全的,结果会怎样?(无需执行“手动”锁定)。使用(实际上默认)非线程安全有什么好处?我想到的一件事是性能(尽管更多是猜测)。很直观的是,当函数或字段不需要线程安全时,它不应该是。然而,问题是:为什么?线程安全只是您始终需要实现的额外代码量吗?在什么情况下我可以100%确定例如一个字段不会同时被两个线程使用? 最佳

c# - 在 C# 中,我如何安全地退出带有 try catch block 的锁?

这是一个在锁内发生异常的示例,带有try-catchblock。intzero=0;intj=10;lock(sharedResource.SyncRoot){try{j=j/zero;}catch(DivideByZeroExceptione){//exceptioncaughtbutlocknotreleased}}我如何安全地释放锁扣? 最佳答案 不会自动释放吗?来自MSDN的锁手段System.Threading.Monitor.Enter(x);try{...}finally{System.Threading.Monito

c# - 线程安全类是否应该在其构造函数的末尾设置内存屏障?

当实现一个旨在线程安全的类时,我是否应该在其构造函数的末尾包含一个内存屏障,以确保任何内部结构在它们可以被访问之前已经完成初始化?还是消费者有责任在使实例对其他线程可用之前插入内存屏障?简化问题:由于在线程安全类的初始化和访问之间缺少内存屏障,下面的代码中是否存在可能导致错误行为的竞争危险?或者线程安全类本身应该防止这种情况发生吗?ConcurrentQueuequeue=null;Parallel.Invoke(()=>queue=newConcurrentQueue(),()=>queue?.Enqueue(5));请注意,程序不入队是可以接受的,如果第二个委托(delegate)

c# - 我们可以使用枚举作为类型安全的实体 ID 吗?

我们在EF6.1代码优先设置中使用一个相当大的模型,我们使用int作为实体ID。不幸的是,这并不像我们希望的那样类型安全,因为很容易混淆id,例如比较不同类型实体的id(myblog.Id==somePost.Id)或类似的。或者更糟:myBlog.Id++。因此,我想出了使用类型化ID的想法,因此您不能混淆ID。所以我们的博客实体需要一个BlogId类型。现在,显而易见的选择是使用一个包含在结构中的int,但您不能将结构用作键。而且你不能扩展int...-等等,你可以!使用枚举!所以我想到了这个:publicenumBlogId:int{}publicclassBlog{public

c# - 使用 'using' 而不是关闭 WebResponse 和 StreamReader 是否安全

目前我已经为HttpWebRequest实现了一个名为GetResponse(url)的简单辅助方法。目前,我在读取结果后手动关闭WebResponse和StreamReader。然后我像这样返回上述结果://constructtherequestHttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(url);request.Method="GET";//gettheresultWebResponseresponse=request.GetResponse();StreamReaderreader=newStreamReader

[Web安全入门]BURP基本使用详解

目录BURP安装、配置、基本使用BRUP安装和配置HTTP简介http请求包格式http应答包格式http状态值burp功能详解target标签target在渗透攻防中的利用dashboard仪表盘scanner扫描器proxy标签intruder标签repeater标签comparer对比标签BURP安装、配置、基本使用BRUP安装和配置前置条件:安装好jdk11并配置好环境变量 首先下载官方的安装包和对应版本的burploader,使用burploader进行激活1.安装burp依据自己的使用习惯为burp选择一个安装目录2.安装完成后进入burp主目录,将burploader.jar放到

【网络安全】Docker部署DVWA靶机环境

目录前言Docker部署DVWA部署仓库镜像部署DVWA手动部署DVWA前言Docker很好用,DVWA更是网络安全学习当中必不可少的靶机,但是DVWA的部署实在是太过麻烦了,如果每次不小心删除虚拟机或者更新了VM之后导致虚拟机不可用而删除重新部署,那简直就是灾难。而这就是Docker的优势了!Docker在部署之后可以打包成压缩文件,推送仓库之后就可以在任何地方的Docker上运行了!Docker部署废话不多说,如果对Docker发展和详细使用感兴趣的话可以私信博主,博主会尽快安排下一次文章更新的时候用这个命题。但是现在是Docker部署的时间。Docker的详细部署在阿里镜像站当中有讲解,

华为云会议高标准通过可信云大会安全与服务两项评估

2021可信云大会发布上半年度可信云评估结果,华为云会议凭借强大的云服务安全性和服务保障能力,成为国内首批通过可信云-云安全评估和可信云-企业级SaaS服务评估的视频会议解决方案。这是华为云会议在深耕视频会议之路上又一次重大的行业认证突破。由中国信息通信研究院主办的可信云大会,始于2013年,是国内最早针对云计算开展评估工作的组织,也是国际产业标准之一,是我国云计算领域信任体系的权威评估,发展至今,已建立了云计算基础服务和产品评估、企业SaaS评估以及云安全等在内的综合评估体系,成为衡量云服务技术能力和服务水平的重要标准。可信云-云服务安全评估华为云会议此次参评的可信云-云服务安全评估,其服务

c# - 在 C# 中安全地生成 SQL 查询

在C#中生成SQL查询的最安全方法是什么,包括清理用户输入以防止注入(inject)?我希望使用不需要外部库的简单解决方案。 最佳答案 使用Sql参数:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter(v=vs.80).aspx这是C#中的示例SqlCommandtCommand=newSqlCommand();tCommand.Connection=newSqlConnection("YourConnectionString");t