java 确保线程安全_确保不安全感

article/2025/10/10 20:06:40

java 确保线程安全

33岁的克雷格·斯宾塞(Craig Spencer)在治疗埃博拉病毒患者后于10月17日从非洲返回美国。 几天后,他的埃博拉病毒呈阳性React。 每个人(尤其是周围的人)和纽约人都感到关切。 纽约市市长走到媒体前,向其公民保证-他们拥有世界顶级的医务人员以及最先进的医疗设备来治疗埃博拉病毒-并且他们为此做好了很多准备月。 当然,这可能会使大多数人平静下来。

让我再举一个例子。

当我的小女儿三个月大时,她曾经把手放在任何人的手上。 现在-她已经11个月了,知道她的母亲是谁。 每当发现任何困难时,她都会不断哭泣,直到找到母亲为止。 她只有在母亲怀抱中感到安全。

当我们在计算机屏幕上输入密码时,我们非常担心,我们的邻居会看到它。 但是–我们从不担心国家安全局(NSA)看到我们享有盛誉的商业电子邮件。 为什么呢 要么完全超出我们的控制范围,要么我们相信国家安全局只会使用它们来加强国家安全,而无其他选择。

我试图通过所有这些例子来说明,不安全感是一种感知。 它是由不良行为触发的感知。 不良行为反映了情况偏离正确性的程度。

这一切与感知和建立感知有关。 地球上没有100%的安全系统。 由于计算机处理能力的提高,在80年代和90年代开发的大多数密码算法现在都被破坏了。

正确性
在计算机世界中,大多数开发人员和操作员都担心正确性。 正确性与实现期望的行为有关。 您将$ 1000存入您的帐户,您会期望节省的钱会精确地增加1000。将文档发送到打印机,并且您希望输出的结果与在计算机屏幕上看到的一样。

安全性关注于防止不良行为。

如果违反了三个安全属性,它们可能导致不良行为: 机密性完整性可用性

屏幕截图2014年10月28日下午2.37.08
机密性意味着在静止和运输过程中保护数据免受意外收件人的侵害。 通过使用加密保护传输通道和存储,可以实现机密性。

完整性是对数据正确性和可信赖性以及检测任何未经授权的修改的能力的保证。 它确保保护数据免受未经授权或无意的更改,修改或删除。 实现完整性的方法有两个:预防措施和侦查措施。 两种措施都必须照顾传输中的数据以及静态数据。

使系统始终可供合法用户访问的系统是任何系统设计的最终目标。 安全不是要研究的唯一方面,但是它在保持系​​统正常运行中起着重要作用。 安全设计的目标应该是通过防止非法访问尝试来使系统具有高可用性。 这样做极具挑战性。 攻击(尤其是在公共终结点上的攻击)可以从在系统中植入恶意软件的攻击者到高度组织化的分布式拒绝服务(DDoS)攻击而定。

2011年3月,RSA公司被违反。 攻击者能够窃取与RSA SecureID设备相关的敏感令牌。 这些令牌随后被用于侵入使用SecureID的公司。

攻击
2013年10月,Adobe公司遭到违反。 源代码和客户记录均被盗-包括密码。

在Adobe遭到攻击后仅一个月,即2013年11月,Target遭到攻击,4000万张信用卡和借记卡数据被盗。

这些攻击怎么可能? 许多漏洞都是通过利用相关系统中的漏洞开始的。 漏洞是攻击者可以利用一组精心设计的交互来利用其来实现不良行为的缺陷。 通常,缺陷是系统设计或实施中的问题,因此不能满足其期望的要求。

确切地说,流程是设计中的缺陷,而错误是实现中的缺陷。 漏洞是系统中的缺陷,不仅影响正确性,而且还影响系统与安全相关的行为。

如果您遇到RSA 2011漏洞,则它是基于Adobe Flash Player中的漏洞。 当精心设计的Flash程序由易受攻击的Flash播放器运行时,攻击者可以在运行的计算机上执行任意代码-这实际上是由于代码中的错误所致。

为了确保安全,我们必须消除错误和设计流程,并使它们更难以利用。

2010年,人们发现,自2006年以来,一帮装有强力吸尘器的抢劫犯从法国Monoprix连锁超市偷走了60万欧元。 最有趣的是他们做事的方式。 他们发现了系统中最薄弱的环节并对其进行了攻击。 为了将钱直接转移到商店的现金库中,收银员通过气动吸管滑动装满钱的管子。 强盗意识到,只需要在行李箱附近的管道上钻一个洞,然后连接一个真空吸尘器就可以收钱。 他们不必面对保险箱。

最弱
要解决的问题是,适当的安全设计应包括系统中的所有通信链接。 您的系统没有比其最薄弱的环节更强大。

防御
对于为了安全性而被加强的任何系统,首选分层方法。 这也称为深度防御。 大多数面临恐怖袭击危险的国际机场在其安全设计中都采用了分层的方法。 2013年11月1日,一个穿着黑衣服的男子走进洛杉矶国际机场,从包中拉出一个半自动步枪,开枪穿过安全检查站,杀死了TSA筛查员,并炸伤了至少两名其他人员。 这是第一道防线。 万一有人通过它,必须有另一个来防止枪手进入飞行并控制。 如果在TSA之前有一个安全层,也许只是扫描进入机场的每个人,它就会检测到武器,并可能挽救TSA官员的生命。 层数和每层的强度取决于您要保护的资产以及与之相关的威胁级别。 为什么有人会雇用保安人员并使用防盗警报系统来保护空车库?

内部攻击功能不那么强大,复杂程度也较低,但是非常有效。 从WikiLeaks泄露的美国机密外交电报到爱德华·斯诺登(Edward Snowden)关于国家安全局秘密行动的披露,都是内部攻击。 斯诺登(Snowden)和布拉德利·曼宁(Bradley Manning)都是内部人士,可以合法获取他们所披露的信息。 大多数组织将大部分安全预算用于保护系统免受外部入侵者的侵害。 但据旧金山的计算机安全协会(CSI)称,大约60%至80%的网络滥用事件来自网络内部。

内部人士
内部攻击被认为是军方日益增长的威胁。 为了解决这个问题,美国国防高级研究计划局(DARPA)在2010年启动了一个名为“网络内部威胁”(CINDER)的项目。该项目的目的是开发新的方法,以尽快识别和缓解内部威胁。

sc昧
Kerckhoffs的原则强调,系统应通过其设计来确保安全,而不是因为对手不知道其设计。 微软的NTLM设计已经保密了一段时间,但在这一点上(为了支持Unix和Windows之间的互操作性),Samba工程师对其进行了反向工程,他们发现了协议设计本身引起的安全漏洞。 在适当的安全设计中,强烈建议不要使用任何自定义开发的算法或协议。 标准就像设计模式:已经在一个开放的论坛中讨论,设计和测试了它们。 每次您必须偏离标准时,都应三思而后行。

软件安全性只是计算机安全性的一部分或分支。 软件安全性是一种计算机安全性,它使用最佳语言,工具和方法来致力于软件的安全设计和实现。 软件安全性研究的重点是“代码”。 大多数流行的安全性方法都将软件视为黑匣子。 他们倾向于忽略软件安全性。

屏幕截图2014年10月28日下午2.28.48
换句话说,它专注于避免软件漏洞,缺陷和错误。 尽管软件安全性与计算机安全性的其他领域重叠并互为补充,但其着眼点在于安全系统代码。 这种关注使其成为白盒方法,而其他方法则更像黑盒。 他们倾向于忽略软件的内部。

为什么软件安全对代码的关注很重要?

简短的答案是软件缺陷通常是安全问题的根本原因,并且软件安全旨在直接解决这些缺陷。 其他形式的安全性往往会忽略该软件,并围绕该软件建立防御措施。 就像城堡的城墙一样,这些防御措施非常重要,并且可以起到一定的作用。 但是,当软件缺陷仍然存在时,切割刀攻击者通常会找到一种绕过那些墙的方法。

现在,我们将考虑几种用于安全实施的标准方法,并查看其黑盒特性如何提出软件安全技术可以解决的局限性。 我们的第一个示例是通过操作系统或OS强制执行安全性。 在1970年代初期,计算机安全作为一个领域逐渐发展起来时,操作系统就是重点。 对于操作系统而言,正在运行的程序的代码并不重要。 相反,操作系统会在乎程序的功能,即程序在执行时的动作。 这些操作称为系统调用,包括读取或写入文件,发送网络数据包以及运行新程序。 操作系统执行限制系统调用范围的安全策略。 例如,操作系统可以确保Alice的程序无法访问Bob的文件。 或那些不受信任的用户程序无法在标准网络端口上设置受信任的服务。

操作系统
操作系统的安全性至关重要,但是并不总是足够的。 特别是,程序的某些与安全性相关的动作的粒度太细,无法作为系统调用来协调。 因此,软件本身也需要参与其中。 例如,数据库管理系统或DMBS是管理数据的服务器,其安全策略特定于正在使用该数据的应用程序。 例如,对于在线商店,数据库可以包含针对客户和供应商的安全敏感帐户信息以及其他记录,例如根本不安全的产品描述。 由DBMS实施安全策略来控制对此数据(而不是OS)的访问。

操作系统也无法强制执行某些类型的安全策略。 操作系统通常充当执行监视器,该执行监视器根据当前执行上下文和程序的先前操作来确定是允许还是不允许程序操作。 但是,有些策略是无法做到的,例如信息流策略,如果不考虑潜在的未来行动,甚至不采取行动,就无法准确地实施这些政策。 在这些情况下,可以与OS配合使用软件级机制。

另一种流行的安全实施机制是网络监视器,例如防火墙或入侵检测系统或IDS。 防火墙通常通过阻止连接和数据包进入网络来工作。 例如,防火墙可能会阻止所有尝试连接到网络服务器的尝试,除了那些监听指定端口的尝试。 例如TCP端口80(Web服务器的标准端口)。 当在本地网络上运行仅供本地用户使用的软件时,防火墙特别有用。 入侵检测系统通过检查网络数据包的内容,寻找可疑的模式来提供更细粒度的控制。 例如,为了利用易受攻击的服务器,攻击者可能将精心设计的输入作为网络数据包发送到该服务器。 IDS可以查找此类数据包并将其过滤掉,以防止发生攻击。 防火墙和IDS擅长减少攻击途径并防止已知的攻击媒介。 但是两种设备都可以解决。 例如,大多数防火墙都会允许端口80上的流量,因为它们认为这是良性的Web流量。 但是,即使通常是这样,也不能保证端口80仅运行Web服务器。 实际上,开发人员已经发明了SOAP,SOAP代表简单的对象访问协议(自SOAP 1.2起就不再使用缩写),以解决除端口80以外的其他端口上的防火墙阻塞问题。SOAP允许进行更多通用的消息交换,但使用网络协议。

防火墙
现在,与我们的防火墙相比,IDS模式更精细,并且能够查看正在发生的详细信息。 但是,IDS也可能因攻击模式的无关紧要而被愚弄。 尝试使用更高级的过滤器来填补这些空白,可能会减慢流量,攻击者可以通过发送大量有问题的流量,造成拒绝服务(即可用性下降)来利用这种减慢速度。 最后,考虑使用防病毒扫描程序。 这些工具检查主机上文件,电子邮件和其他流量的内容,以寻找攻击迹象。 这些与IDS十分相似,但是它们对文件进行操作,因此对性能的要求不那么严格。 但是,通常也可以通过对攻击媒介进行小的更改来绕开它们。

现在,我们以Heartbleed错误为例,总结了软件安全性与黑盒安全性的比较。 Heartbleed是为传输层安全协议或TLS的OpenSSL实现1.0.1版中的错误提供的名称。 通过使运行OpenSSL的越野车服务器返回其内存部分,可以利用此漏洞。 该错误是缓冲区溢出的一个示例。 让我们看一下黑匣子安全机制,以及它们如何对抗Heartbleed。

心
操作系统执行和防病毒扫描程序无济于事。 对于前者,利用窃取数据的漏洞利用通常授予已启用TLS的服务器的特权来窃取数据。 因此,操作系统看不到任何错误。 对于后者,该漏洞利用是在TLS服务器执行时发生的,因此在文件系统中不会留下任何明显的痕迹。 IDS使用的基本数据包筛选器可以查找漏洞利用数据包的迹象。 宣布Heartbleed后不久,联邦调查局(FBI)发布了snort IDS的签名。 这些签名应与基本漏洞利用相对应,但是漏洞利用可能能够应用数据包格式的变体,例如分块以绕过签名。 无论如何,不​​容易确定成功攻击的后果,因为任何泄露的数据都将返回到加密通道。 现在,与这些方法相比,软件安全方法的目标是通过防止或更全面地减轻软件缺陷来直达问题的根源。

威胁建模是一种系统的,系统的方法,用于识别系统部署中可能存在的安全威胁和漏洞。 首先,您需要识别系统中的所有资产。 资产是您必须保护免受入侵者侵害的资源。 这些可以是存储在LDAP中的用户记录/凭证,数据库中的数据,文件系统中的文件,CPU能力,内存,网络带宽等等。 识别资产还意味着识别其所有接口以及与其他系统组件的交互模式。 例如,可以多种方式公开存储在数据库中的数据。 数据库管理员对数据库服务器具有物理访问权限。 应用程序开发人员具有JDBC级访问权限,最终用户可以访问API。 一旦确定了系统中所有要保护的资产和所有相关的交互模式,就需要列出所有可能的威胁和相关的攻击。 基于CIA三合会,可以通过观察交互来识别威胁。

无标题

从应用程序服务器到数据库的是JDBC连接。 第三方可以窃听该连接以读取或修改流经该连接的数据。 那是威胁。 应用程序服务器如何保留JDBC连接的用户名和密码? 如果将它们保存在配置文件中,则有权访问应用程序服务器的文件系统的任何人都可以找到它们,然后通过JDBC访问数据库。 那是另一个威胁。 JDBC连接受到用户名和密码的保护,而用户名和密码可能会受到蛮力攻击而被破坏。 另一个威胁。

管理员可以直接访问数据库服务器。 他们如何访问服务器? 如果通过用户名/密码打开了SSH访问权限,那么暴力攻击很可能构成威胁。 如果基于SSH密钥,这些密钥存储在哪里? 它们是存储在管理员的物理个人计算机上还是上载到密钥服务器? 将SSH密钥丢失给入侵者是另一个威胁。 端口如何? 您是否打开了数据库服务器的任何端口,入侵者可以在其中远程登录并获得控制权或对开放端口进行攻击以耗尽系统资源? 可以从公司网络外部访问运行数据库的物理机吗? 仅通过VPN可用吗?

所有这些问题使您能够确定数据库服务器上可能存在的威胁。 最终用户可以通过API访问数据。 这是一个公共API,从公司防火墙公开。 如果使用HTTP基本/摘要身份验证保护API,则暴力攻击始终是威胁。 破坏了身份验证层后,任何人都可以自由访问数据。 另一个可能的威胁是有人正在访问通过传输通道流动的机密数据。 执行中间人攻击可以做到这一点。 DoS也是可能的威胁。 攻击者可以发送精心制作的恶意超大负载,以耗尽服务器资源。 STRIDE是一种流行的技术,可以有条不紊地识别与系统相关的威胁。 STRIDE代表欺骗,篡改,抵赖,信息泄露,拒绝服务,特权升级。

翻译自: https://www.javacodegeeks.com/2014/11/securing-the-insecure.html

java 确保线程安全


http://chatgpt.dhexx.cn/article/KqItd7yf.shtml

相关文章

经验:一个秒杀系统的设计思考

前言 秒杀大家都不陌生。自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见。简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程。 从架构视角来看,秒杀系统本质是一个高性能、高一…

Java调用C++/C

Java调用C/C有3中方式:JNI、JNA、JNative。 注:1、个人觉得还是JNA的方式最好。 2、Java和C/C交互的难点在于数据结构的对应 3、java不可以直接调用C#代码,C#代码需要托管 JNI (Android调用,普通java类似)…

kubernetes 静态存储与动态存储

静态存储 Kubernetes 同样将操作系统和 Docker 的 Volume 概念延续了下来,并且对其进一步细化。Kubernetes 将 Volume 分为持久化的 PersistentVolume 和非持久化的普通 Volume 两类。为了不与前面定义的 Volume 这个概念产生混淆,后面特指 Kubernetes …

Java多线程整理

目录 1. 进程与线程 1.1 进程 1.2 线程 1.3 并发与并行 2. 多线程 2.1 多线程的概念 2.2 多线程的好处 2.3 主线程 3. 线程的创建与启动 3.1 继承Thread类 3.2 实现Runnable接口 3.3 实现Callable接口 3.4 run方法调用和start调用的区别 4.线程的状态 4.1 线程状…

th和td标签的区别

th和td标签的区别 开发工具与关键技术: Dw HTML 作者:邹贺汗 撰写时间:2019年2月4日 在写这篇文章的时候我就知道虽然我发的不是第一个,但是说不定我写刚好给有需要的人看到了呢,所以我就写了这篇文章,下面…

html中th标签添加方法,HTML th 标签

HTML 标签 标签表示HTML表格的表头部分,该标签中的内容会以粗体显示,请参考下述示例: 实例 一个简单的 HTML 表格,带有两个表头单元格和两个数据单元格: MonthSavingsJanuary$100 尝试一下 (更多实例见页面底部) 浏览…

thymeleaf标签之th:href的使用

项目中使用springboot来进行开发,自然也就接触到了thymeleaf这套模板,如果你对c标签很熟悉的话,我觉得上手这个应该是很快的。 介绍下th:href在项目中的使用。 它的写法与th:src一样 一般写法为th:href"{值}" 如果是需要从model…

使用thymeleaf时,th:类标签失效的原因

问题出现: 最近学习后端,学到了thymeleaf这一块,学习中出现了一个问题我没有注意到,导致后面页面编写出现重大bug:项目中我使用了thymeleaf,配置的映射路由为:/index,访问首页的时候…

HTML——表头标签th的属性

<th>标签的属性和<td>标签的属性及语法格式非常的相似&#xff0c;用于设定表格中某一表头的属性。 <th>标签中常用的属性 标签描述align设置单元格内容的水平对齐方式valign设置单元格内容的垂直对齐方式bgcolor设置单元格的背景颜色background设置单元格的…

标签thead与th的区别

标签thead与th的区别 如图所示&#xff0c;thead 和 tbody标签在tr外层&#xff0c;具有更好的语义化&#xff0c;而th在 tr 之内&#xff0c;与td同级&#xff0c;起到文字加粗的效果

html中table标签、tr标签、th标签、td标签的基础知识

html中table标签、tr标签、th标签、td标签的基础知识 表格的结构表格的基本标签表格标签的基本属性table标签的基本属性tr标签的基本属性th和td标签的基本属性 表格高级样式设置相关概念外边框线样式属性frame内部边框样式属性rules 单元格合并水平方向单元格的合并垂直方向单元…

4、HTML——表格标签、表单标签

目录 一、表格标签&#xff1a;table—tr—td/th 1、合并单元格 1.1 合并同行不同列的单元格&#xff08;列合并&#xff09; 1.2 合并同列不同行的单元格&#xff08;行合并&#xff09; 二、表单标签&#xff1a;form 1、form标签 2、input输入标签 2.1 type属性…

html中的tr,td,th标签

tr是 table row 表格的行 HTML中 标签定义 HTML 表格中的行。tr 元素包含一个或多个 th 或 td 元素。 td是table data(表格数据) HTML中 标签定义 HTML 表格中的标准单元格。 元素中的文本通常是普通的左对齐文本。 th是table heading表格标题 &#xff0c;一般表格第一行的数…

javascript网页二次元3D小人详细教程

一.科班直接复制以下代码到vscode打开网页即可(小白请往下看教程) 二.小白详细教程(没有代码编译软件一样能做出来看到效果) 三.视频展示 一.科班直接复制以下代码到vscode打开网页即可(小白请往下看教程) javascript网页二次元小人(眼睛跟随鼠标移动) <!DOCTYPE html>…

web期末作业网页设计——JavaScript

目录 一.作品简介 二.网页效果 首页 花语 登录界面 注册界面 三.网页代码 首页 登录界面 注册界面 视频界面 一.作品简介 网站系统文件种类包含&#xff1a;html网页结构文件、css网页样式文件、js网页特效文件、images网页图片文件。 网页作品代码简单&#xff…

HTML+CSS+JavaScript网页特效源代码(复制代码保存即可使用)

以下下代码直接复制保存即可使用 特效一特效二特效三特效四特效五特效六特效七 特效一 方块运动演示 <html><head> <meta charset"utf-8"> <title>蓝盒子</title> <style>body { margin: 0; padding: 0;background: black…

JavaScript实现网页关灯效果

JavaScript实现网页关灯效果 案例池子&#xff1a; JS实现鼠标悬停变色 JavaScript中的排他算法实现按钮单选 JavaScript中的localStorage JavaScript中的sessionStorage JavaScript实现网页关灯效果 JavaScript实现一段时间之后关闭广告 JavaScript实现按键快速获取输入框…

JavaScript 网页购物车项目

今天是JavaScript的一个汇总&#xff0c;最近小编把自己曾经写过的JavaScript 网页购物车项目给整理了一下&#xff0c;大家可以看一下&#xff0c;然后自己也可以写一个网页购物车项目噢&#xff0c;然后我们的JavaScript的学习也到此结束啦&#xff01;下周开始给大家更新 新…

js实现网页自动化

不讲废话&#xff0c;直接主题 一、总览 二、元素获取 1、原生获取 2、jq获取 三、元素操作 $0 代表当前元素&#xff0c;下面给几个典型的例子&#xff0c;其他以此类推。 1、文本框 $0.value "United States"2、下拉框 $0.value "United States" …

JavaScript实现网页计算器

Hbuilder X中实现网页计算器&#xff08;-*/&#xff09; 文章目录 一、计算器代码二、代码分析 一、计算器代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>计算器</title><style type"text/css"…