为什么要选择Web3?它有什么好处?
原文链接:
作者:Ryan Boder
译者:iguana
翻译机构:WhaleDao
Web3无疑是当前最热门,也最有争议的名词之一。与加密狂热者交谈,你会听到Web3是互联网的未来,它将把我们从垄断性技术公司和压迫性政府的桎梏中解放出来;与愤世嫉俗者交谈,你会听到Web3是一个由骗子主导的巨大骗局,除了欺骗、偷窃和资助犯罪活动外,没有任何其他价值;与技术专家交谈,你会听到关于去中心化、网络共识、拜占庭将军和抵抗女巫攻击。
那么,我们应该相信和理解的Web3是什么样的呢?
Web3是什么?
在我们开始辩论之前,我们需要对它进行定义,甚至连定义也很困难。术语 "Web3 "是由Ethereum联合创始人Gavin Wood在2014年提出的,但社区还没有就定义达成共识。简单的搜索一下,就会发现当前对它有各种各样的定义,但共同的主题是用户所有权、自由、隐私、区块链、智能合约和去中心化。
我是一个实用主义者。在这篇文章中,我们将避免崇高的哲学定义,而是从技术的角度来描述Web3的现状。
无论你爱它,还是恨它,今天的Web3其实还是我们熟知的网络,只是增加了区块链技术为基础的智能合约。
是的,根据原则、哲学、政治和乌托邦式的梦想,我们还有许多其他方式来定义它。我不同意也不反对这些定义,但在这里我们尽量让他保持简单和直观,我们将对Web3做如下假设:
1.Web3钱包可以允许被识别、登录到应用程序、证明拥有权和授权交易。如果你愿意,可以保持钱包是匿名的(实际上是假名)。重要的是,你,而且只有你,能够控制自己的钱包,这被称为 "非托管";
2.不需要许可就可以使用Web3。你只需要Web3钱包,并且保证里面有足够的货币,就可以用来支付你想做的事情。这通常被称为,Web3是 "无需许可 "的。
3.区块链是值得信赖的。你可以信任一个建立在良好区块链上的好的智能合约,而不用信任一个人或一个公司。智能合约被称为 "无需信任",因为你不需要信任另一方,就可以通过智能合约与他们做生意。如果使用得当,你只需要信任区块链。
最后一点(3)是有争议的。Web3的键盘侠可能已经群青激昂,说我是多么的荒谬,你不能相信Web3的任何东西,因为它都是一个大骗局。然而,我并不是说可以相信任何区块链或任何Web3应用程序,我也不是说你可以相信其他Web3用户。
一般而言,你可以信任像比特币和以太坊这样历经考验的区块链(可能还有其他一些链),而不是信任个人或公司。这些区块链具有合理的理论、透明度、审计,并且经历了时间的考验,值得信赖。请注意,我说可以相信区块链,但不一定要相信运行在上面的应用程序,那些是需要被验证的。
Web3这个词充满误导性。许多人认为Web3中的 "3 "是一个产品版本,觉得它完全取代了Web2,让Web2变得过时,就像新的iPhone型号替代上一个一样。实际上,它更像是网络上的下一个重要生态层。Web3是建立在Web2之上的,就像Web2是建立在原始网络(万维网)之上一样。我们今天仍然在使用原始网络。Web3不会取代Web2, Web3通过在Web2基础上添加智能合约来增强Web2。
为什么要投身Web3?
现在我们有了Web3的定义,问题是我们为什么需要它?同样,根据你的价值观和目标,有许多潜在的答案。但是在我所知道的所有观点中,有一个统一的主题,大家的认识是一致的。
Web3之所以重要,是因为它使个人(或实体)能够在互联网上直接做生意和交换价值,而不需要一个可信任的中介(又称中间人)。
在这个概念的基础上,有无数提议的用例,也有数不胜数的宏伟想法,让我们考虑一下上面列出的每一个关于Web3的假设。
1.非托管的Web3钱包是你的身份。在Web2中,你的身份是由存储你数据的组织管理(和有效拥有)的。你可能在法律上拥有你的银行账户,但银行保管着你的钱,并决定你是否以及何时可以使用它。在Web3中,这个中间人(银行)可以被移除,你可以完全为自己的钱负责。
2.作为一个无需许可的网络,你不会被阻止或被审查。在Web2中,你所做的一切、所说的一切或所分享的一切,都要通过一个中央主机,而这个中央主机有权力冻结、阻止和取消你的行动。在Web3世界中,这个中间人被移除了,你就可以自由参与你想参与的一切。
3.作为一个无需信任的计算平台,你不会被智能合约欺骗(在合理范围内)。在Web2中,你的每一笔交易都要听任一个或多个受信任的中间人的摆布,如市场、支付网络或交易平台,你必须相信他们会诚实地运作。在Web3世界中,这些中间人可以被移除,你可以依靠智能合约,按照编好的程序做事。
同样,第(3)点也是有争议的,我将在后面解释信任智能合约所带来的风险和责任。重要的是,Web3的所有这些关键问题都可以归结为去除受信任的中间人,使你能够在互联网上直接与无需信任的对手做生意,而没有什么风险。
为什么要消除中间商?
消除中间商在直觉上听起来不错,但我们为什么要这么做呢?中间商是就是坏人吗?不一定,中间商也是有价值的,否则他们一开始就不会成为等式的一部分。
但我们经常看到,一些行业已经发展到了中间商的阶层效率低下、观念过时和不必要的状态。直接面向消费者的 社会 运动,提供了无数消除中间商使消费者受益的例子。许多顶尖的 科技 公司都是通过使用优于中间商的技术,取代过时的、低效的中间商,并为客户提供更好的服务来缔造自己的商业帝国。
如果智能合约可以取代一层中间商并更好地为客户服务,那么它就是为企业家消除浪费、改善人们生活和创造价值的机会。我们通常认为,这些是理想的结果。
这是否意味着所有的中间商都应该被智能合约所取代?不!只有当它为消费者提供充分的收益时才会这样。但事实证明,许多大型行业都有相当大的机会。
在一个行业中,中间商的构成并不总是很明显。有时,在市场发展或引入突破性技术后,看似核心服务,也可能最终被视为不必要的中间商。通过消除中间商,使消费者受益的机会可能比看起来的要多。
另一方面,消除中间商也可以让生产商更有效地接触客户,从而使他们受益。可以增加销售额和利润率,使面临竞争的生产商能够为客户提高质量或降低价格。
当现有的中间商层被组织起来,有利于市场领导者时,消除对受信任的中间商的需求,甚至可以帮助为初创公司创造公平的竞争环境, 这是通过增加生产者之间的竞争使消费者受益。
为什么不选择Web3?
如果 Web3 如此出色,那么为什么不是每个人都已经在使用它呢?它发展迅速,但远未被所有人使用。我对这个问题的回答来自相信 Web3 的人可能会令人惊讶。
Web3 并不是唯一的选择。Web3 是一种技术设计,提供了一定的好处,但同时要付出一定的代价。这是一种工程权衡,它的优化方式与 Web2 不同,而且是以牺牲一些优点为代价的。
Web3 的应用也是有成本的,典型示例如下:
1.区块链针对基于冗余和共识的安全保证进行了优化,从而实现了无需信任的计算。但是它们没有针对性能进行优化,与 Web2 应用程序相比,智能合约和 Web3 应用程序的计算性能很糟糕,运行更慢,用户体验也不好。
2.与Web2计算环境相比,区块链的运行成本更高,原因与它们速度较慢的原因相同。我的意思是真正的运营成本,而不是公司可能会向你收取多少费用。在单个服务器上运行一个应用程序,比在多个服务器上同时运行它并实现网络共识要便宜得多。这些费用会以使用网络的交易费用的形式出现。大量频繁使用的去中心化的区块链,会产生高额的交易费用。
3.保管自己的身份和资产是一种授权,但也是一项重大责任。如果您犯了错误,没有保管人可以为您撤消和修复账户。
Web3使人们能够安全地相互交互,无需信任中间商,但它速度较慢,成本更高,并且将责任重担推到了自己的肩上。
Web3狂热者倾向于相信,去除中间商的好处远远超过成本,或者成本将很快通过技术改进来消除,因此他们会忽略或否认这一点。在我看来,即使作为 Web3 的信徒,忽略这些成本也是愚蠢的。它们确实存在。
另一方面,Web3 的喷友们往往持有极端相反的观点。 他们认为基于区块链的、无需信任的计算平台没有实际的好处, 或者成本总是超过收益,所以不值得浪费力气。
现实介于 Web3 狂热者和喷友们的观点之间。 Web3是非常有价值的,也很重要,但它也不是万能的。
什么时候值得为Web3花钱?
前面我们已经有如下共识:
1.Web3在Web2的基础上构建,并使用智能合约进行扩充,但不会取代它。
2.Web3的主要好处是消除了可信赖的中间商,并让人们能够直接相互开展业务。
3.与Web2相比,Web3有一些缺点,例如性能较低、成本较高以及用户自身责任较大。
那么什么时候使用 Web3而不是仅仅使用 Web2 才有意义呢?
需要盈利的中间商
在需要中间商的地方,中间商就会蓬勃发展。但在其他条件相同的情况下,中间商的存在会增加成本,因此必须增加足够的利益,证明其成本是合理的。当有一层居间牟利并且有利可图的中间商时,这就为Web3应用程序提供了潜在契机,Web3在这些应用或行业中存在应用前景。
另一种思考方式是,Web3的目的是取代中间商。一个有利可图的中间商的存在,意味着交易双方之间可能存在信任问题,所以中间商是作为一个可信赖的中介出现的。这是一个线索,表明这个行业可能已经成熟,可以进行颠覆,而且可能有对基于Web3的替代方案存在需求。
在用基于智能合约的应用程序取代中间商的过程中,去中心化的应用程序成为新的中间商。它是一个更值得信赖、可验证和高效的中间商。
高风险
Web3 应用程序应该促进有价值的交易。Web3 针对安全性进行了优化。如果应用程序没有任何有价值的东西,那么就很难证明 Web3 的成本是合理的。为什么要为并不需要的安全性付费呢?
目前不乏高风险应用程序通过 Web2 上的可信中介运行的案例。
输入和输出的可行性
智能合约最难解决的问题之一是,它们在区块链上是孤立的。它们不能轻易地与世界其他地方,甚至是互联网的其他地方进行互动。对于Web3应用程序的输入和输出,有两种选择。
1.只与区块链上已经存在的东西互动。这就是比特币作为货币的一种运作方式,也是为什么它是一个理想的Web3应用程序。当你向另一个钱包发送比特币时,你所需要的一切要么已经在链上(你的比特币),要么你自己提供(金额和收件人)。这很容易,但严重限制了可以支持的用例。基本货币转移以外的应用程序通常依赖于链下的事物。
2.使用预言机。预言机将链上智能合约与链外数据和服务连接起来。大多数去中心化的金融应用都使用预言机来获取链外数据,如代币、股票或商品的当前价格。
由于选项 (1) 受到严格限制,我们将假设选项 (2) — 将使用预言机。
问题是预言机提供的可信数据和服务在 Web3 中也相当有限。
以人寿保险为例。索赔决定和赔付可以通过智能合约轻松完成,但可靠地知道被保险人何时死亡就不那么容易了。如果智能合约的输入是不可靠的,那么应用程序就不可靠。没有人想要不可靠的人寿保险。
预言机技术正在改进,像API3这样的项目正在使更多的链外数据和服务可用于智能合约。有趣的是,API3和Airnode存在的主要原因之一,是为了消除Web3预言机的中间人,这与智能合约本身的目的类似。
但是对于今天 Web3 上的应用程序来说,重要的是它需要的输入和输出现在可用于智能合约。否则,它将成为您尝试构建应用程序时的障碍。
可以通过缩小 Web3 应用程序的智能合约部分的范围来解决这个问题。在智能合约中执行可以执行的操作,并且仅部分依赖链外的中间商。一个简单的例子是,当事件发生时,用应用程序向某人发送短信息。智能合约不能自己发送短信, 但是你可以在智能合约中做无需信任的决策部分,然后让它调用 SMS API(一种链外服务)来发送消息。
Web3 可能是当今应用程序的绝佳选择,如果:
1.有非常赚钱的中间商
2.这是一个高风险的应用程序
3.输入和输出可以通过智能合约完成
Web3 是创新、革命还是骗局?
这个问题的答案到现在应该显而易见了。今天,Web3既不能我们解决所有问题,也不是一个巨大的骗局。它是建立在Web2之上的一项突破性技术,增加了用基于区块链的可信赖的(又称无需信任的)的智能合约取代行业中间商的能力。它使企业家能够在存在中间商层并且效率低下、过时且受到监管或集中市场力量保护的高风险行业中,为中间商创造新的、颠覆性的竞争对手。
Web3是一场革命吗?我不知道,也许吧。这不在本文的讨论范围之内。我们现在和短期内的重点是Web3。有很多人认为Web3是一场宏大的政治或意识形态革命,欢迎你去查阅他们的文章。
Web3是个骗局吗?
是否有骗子在利用Web3?是的,非常肯定。Web3是一个高风险、不受监管、不成熟的空间,由区块链和智能合约等改变 游戏 规则的技术产生。当然,它也吸引了诈骗者,其中很多人都是。目前,这不是一个适合天真或容易受骗的人玩的领域,他们很可能会被利用,这是我们在美国所说的 "狂野西部"。
Web3 上不仅存在个人诈骗者,而且还有更大的团伙需要提防。一些骗子甚至建立应用程序、代币和协议,试图将其卖给你。一个常见的加密货币骗局是,骗子创造了一个空气币,积极推销,让买家相信这是一个很好的投资,然后在价格高涨时卖掉他们所有的代币。不要相信Web3上的人、应用程序、代币或协议,因为你无法证实它们是可信的。
区块链的透明性(你可以阅读代码)和不可更改性(它不能被修改),是智能合约值得信赖的原因。可以通过阅读代码来验证它是否符合你的预期,而且可以确信阅读它后不会改变。但没有多少用户有足够的知识,有能力验证智能合约。大多数用户将不得不依靠应用程序的声誉和集体的智慧,来决定他们将信任哪些智能合约。事实证明,这并不是一个糟糕的方法。如果你坚持使用广泛使用、多人验证的Web3应用程序(而且它们看起来不像庞氏骗局),那么你基本上是相当安全的。要有良好的判断力。
一些愤世嫉俗者认为,Web3是一项失败的技术,因为它没有跟上摩尔定律的步伐。但这种说法是完全错误的,摩尔定律是关于计算性能的,这并不是智能合约的目标。正如我在上面解释的那样,智能合约是为实现无信任计算的安全保障而优化的,而不是性能。这就像在争辩说,半成品卡车未能遵循与赛车相同的性能轨迹。当然不是,它们是为运输而设计的,不是为赛车而设计的。
Web3是否值得一试?
我同意愤世嫉俗者的观点,即Web3的适用范围比狂热者让你相信的范围更窄。不是所有的东西都应该在Web3上,它也不会取代Web2,它没有为性能而优化。今天的Web3对符合上述标准的应用程序更有意义。
我不同意愤世嫉俗者的观点,即Web3是一项失败的技术或骗局。一切都是相对的。全球经济是巨大的,Web3不一定要占领整个互联网,即使是全球经济的一部分,也是巨大的市场。Web3已经开始颠覆大型行业,如银行、支付和金融服务。
在这场巨大的互联网转变中,我们仍处于早期阶段。它还有很长的路要走。Web3 将通过用智能合约取代低效、根深蒂固、有时甚至腐败的中间商层,继续颠覆价值万亿美元的行业。这符合消费者的最大利益, 这是完全值得的尝试。
总而言之:
--Web3 用智能合约增强了 Web2,但不会取代它。
--使用非托管钱包,否则你就不是真正的Web3世界一员。
--Web3 是一个无需许可和无需信任的计算平台。
--Web3 使应用程序能够取代受信任的中间商,这就是它的意义所在!
--Web3 有成本,因为这需要通过它的收益来证明。
--当输入/输出可以通过智能合约完成时,Web3 适用于具有盈利中间商的高风险行业。
--Web3 不是骗局,尽管骗子确实会利用它。请当心。
--Web3 是一项突破性技术,可实现对中间商-行业的颠覆。
--Web3 的定位是颠覆全球经济的很大一部分市场。
这篇文章反映了我自己的观察和意见。不管你同意或不同意,都可以评论或给我发消息,参与讨论!
周星驰招聘人才入局互联网,Web3究竟是什么意思?
Web3其实是涉及当今最火热的一个互联网技术也就是区块链技术,是区块链的一个迭代技术。
周星驰招聘人才入局互联网是怎么回事
根据相关新闻报道,最近周星驰,在他自己的个人社交账号上发布了人才招募的信息。具体要求就是招募web3人才,要求熟悉web3相关的技术,并且有一定的管理经验,从这个招募信息可以看出周星驰对于这次招募的重视程度。可另外周星驰对于web3人才方面的招募是非常谨慎的,因为他还表示他会自己亲自的挑选人才。这侧面的说明周星驰跨行进入互联网,并且还是当今比较新颖的web3。这个招募信息的发布,引发了网友们大量的讨论。
web3是区块链的一个迭代技术。
Web3是在当今比较火热的区块链技术上的一个迭代,他具体是一些技术人员在区块链上更进一步的一个构想,可以说是一个新型的互联网。具体来说就是在这个互联网上,用户以及运营者在货币上的一个互联网络。比如通过一些去中心化的社交网络,用户在这个网络上玩一些特定的游戏或者一些任务的时候。该网络可以奖励一些虚拟加密的货币。并且在这个互联网上是允许人们贩卖数字化产品的,从某种程度上来说,可以让这些数字化产品更加保密,更加安全,防止泄漏。
个人看法
我觉得对于周星驰招募人才入局互联网,其实是非常不错的。因为我们都知道,周星驰在电影制作方面是非常有经验和成就的。但是在互联网方面可以说是小白,但是他这次在个人社交账号上公布人才招募的信息,也表现出他入局互联网的决心。所以说对于web3,周星驰可能是有一定的规划和布局,期待他可以在互联网方面取得一定的成就。。
web漏洞攻击有哪些?
一、SQL注入漏洞
SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。
通常情况下,SQL注入的位置包括:
(1)表单提交,主要是POST请求,也包括GET请求;
(2)URL参数提交,主要为GET请求参数;
(3)Cookie参数提交;
(4)HTTP请求头部的一些可修改的值,比如Referer、User_Agent等;
(5)一些边缘的输入点,比如.mp3文件的一些文件信息等。
常见的防范方法
(1)所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。
(2)对进入数据库的特殊字符(’”*;等)进行转义处理,或编码转换。
(3)确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。
(4)数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
(5)网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
(6)严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
(7)避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。
(8)在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。
二、跨站脚本漏洞
跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、窃取密码、传播恶意代码等攻击。
XSS攻击使用到的技术主要为HTML和Javascript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。
XSS类型包括:
(1)非持久型跨站:即反射型跨站脚本漏洞,是目前最普遍的跨站类型。跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码不存储到服务端(比如数据库中)。上面章节所举的例子就是这类情况。
(2)持久型跨站:这是危害最直接的跨站类型,跨站代码存储于服务端(比如数据库中)。常见情况是某用户在论坛发贴,如果论坛没有过滤用户输入的Javascript代码数据,就会导致其他浏览此贴的用户的浏览器会执行发贴人所嵌入的Javascript代码。
(3)DOM跨站(DOM XSS):是一种发生在客户端DOM(Document Object Model文档对象模型)中的跨站漏洞,很大原因是因为客户端脚本处理逻辑导致的安全问题。
常用的防止XSS技术包括:
(1)与SQL注入防护的建议一样,假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。
(2)不仅要验证数据的类型,还要验证其格式、长度、范围和内容。
(3)不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
(4)对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。
(5)在发布应用程序之前测试所有已知的威胁。
三、弱口令漏洞
弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。设置密码通常遵循以下原则:
(1)不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。
(2)口令长度不小于8个字符。
(3)口令不应该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。
(4)口令应该为以下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。
(5)口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail地址等等与本人有关的信息,以及字典中的单词。
(6)口令不应该为用数字或符号代替某些字母的单词。
(7)口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。
(8)至少90天内更换一次口令,防止未被发现的入侵者继续使用该口令。
四、HTTP报头追踪漏洞
HTTP/1.1(RFC2616)规范定义了HTTP TRACE方法,主要是用于客户端通过向Web服务器提交TRACE请求来进行测试或获得诊断信息。当Web服务器启用TRACE时,提交的请求头会在服务器响应的内容(Body)中完整的返回,其中HTTP头很可能包括Session Token、Cookies或其它认证信息。攻击者可以利用此漏洞来欺骗合法用户并得到他们的私人信息。该漏洞往往与其它方式配合来进行有效攻击,由于HTTP TRACE请求可以通过客户浏览器脚本发起(如XMLHttpRequest),并可以通过DOM接口来访问,因此很容易被攻击者利用。
防御HTTP报头追踪漏洞的方法通常禁用HTTP TRACE方法。
五、Struts2远程命令执行漏洞
ApacheStruts是一款建立Java web应用程序的开放源代码架构。Apache Struts存在一个输入过滤错误,如果遇到转换错误可被利用注入和执行任意Java代码。
网站存在远程代码执行漏洞的大部分原因是由于网站采用了Apache Struts Xwork作为网站应用框架,由于该软件存在远程代码执高危漏洞,导致网站面临安全风险。CNVD处置过诸多此类漏洞,例如:“GPS车载卫星定位系统”网站存在远程命令执行漏洞(CNVD-2012-13934);Aspcms留言本远程代码执行漏洞(CNVD-2012-11590)等。
修复此类漏洞,只需到Apache官网升级Apache Struts到最新版本:
六、文件上传漏洞
文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。
因此,在开发网站及应用程序过程中,需严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击。
七、私有IP地址泄露漏洞
IP地址是网络用户的重要标示,是攻击者进行攻击前需要了解的。获取的方法较多,攻击者也会因不同的网络情况采取不同的方法,如:在局域网内使用Ping指令,Ping对方在网络中的名称而获得IP;在Internet上使用IP版的QQ直接显示。最有效的办法是截获并分析对方的网络数据包。攻击者可以找到并直接通过软件解析截获后的数据包的IP包头信息,再根据这些信息了解具体的IP。
针对最有效的“数据包分析方法”而言,就可以安装能够自动去掉发送数据包包头IP信息的一些软件。不过使用这些软件有些缺点,譬如:耗费资源严重,降低计算机性能;访问一些论坛或者网站时会受影响;不适合网吧用户使用等等。现在的个人用户采用最普及隐藏IP的方法应该是使用代理,由于使用代理服务器后,“转址服务”会对发送出去的数据包有所修改,致使“数据包分析”的方法失效。一些容易泄漏用户IP的网络软件(QQ、MSN、IE等)都支持使用代理方式连接Internet,特别是QQ使用“ezProxy”等代理软件连接后,IP版的QQ都无法显示该IP地址。虽然代理可以有效地隐藏用户IP,但攻击者亦可以绕过代理,查找到对方的真实IP地址,用户在何种情况下使用何种方法隐藏IP,也要因情况而论。
八、未加密登录请求
由于Web配置不安全,登陆请求把诸如用户名和密码等敏感字段未加密进行传输,攻击者可以窃听网络以劫获这些敏感信息。建议进行例如SSH等的加密后再传输。
九、敏感信息泄露漏洞
SQL注入、XSS、目录遍历、弱口令等均可导致敏感信息泄露,攻击者可以通过漏洞获得敏感信息。针对不同成因,防御方式不同
十、CSRF
Web应用是指采用B/S架构、通过HTTP/HTTPS协议提供服务的统称。随着互联网的广泛使用,Web应用已经融入到日常生活中的各个方面:网上购物、网络银行应用、证券股票交易、政府行政审批等等。在这些Web访问中,大多数应用不是静态的网页浏览,而是涉及到服务器侧的动态处理。此时,如果Java、PHP、ASP等程序语言的编程人员的安全意识不足,对程序参数输入等检查不严格等,会导致Web应用安全问题层出不穷。
本文根据当前Web应用的安全情况,列举了Web应用程序常见的攻击原理及危害,并给出如何避免遭受Web攻击的建议。
Web应用漏洞原理
Web应用攻击是攻击者通过浏览器或攻击工具,在URL或者其它输入区域(如表单等),向Web服务器发送特殊请求,从中发现Web应用程序存在的漏洞,从而进一步操纵和控制网站,查看、修改未授权的信息。
1.1 Web应用的漏洞分类
1、信息泄露漏洞
信息泄露漏洞是由于Web服务器或应用程序没有正确处理一些特殊请求,泄露Web服务器的一些敏感信息,如用户名、密码、源代码、服务器信息、配置信息等。
造成信息泄露主要有以下三种原因:
–Web服务器配置存在问题,导致一些系统文件或者配置文件暴露在互联网中;
–Web服务器本身存在漏洞,在浏览器中输入一些特殊的字符,可以访问未授权的文件或者动态脚本文件源码;
–Web网站的程序编写存在问题,对用户提交请求没有进行适当的过滤,直接使用用户提交上来的数据。
2、目录遍历漏洞
目录遍历漏洞是攻击者向Web服务器发送请求,通过在URL中或在有特殊意义的目录中附加“../”、或者附加“../”的一些变形(如“..\”或“..//”甚至其编码),导致攻击者能够访问未授权的目录,以及在Web服务器的根目录以外执行命令。
3、命令执行漏洞
命令执行漏洞是通过URL发起请求,在Web服务器端执行未授权的命令,获取系统信息,篡改系统配置,控制整个系统,使系统瘫痪等。
命令执行漏洞主要有两种情况:
–通过目录遍历漏洞,访问系统文件夹,执行指定的系统命令;
–攻击者提交特殊的字符或者命令,Web程序没有进行检测或者绕过Web应用程序过滤,把用户提交的请求作为指令进行解析,导致执行任意命令。
4、文件包含漏洞
文件包含漏洞是由攻击者向Web服务器发送请求时,在URL添加非法参数,Web服务器端程序变量过滤不严,把非法的文件名作为参数处理。这些非法的文件名可以是服务器本地的某个文件,也可以是远端的某个恶意文件。由于这种漏洞是由PHP变量过滤不严导致的,所以只有基于PHP开发的Web应用程序才有可能存在文件包含漏洞。
5、SQL注入漏洞
SQL注入漏洞是由于Web应用程序没有对用户输入数据的合法性进行判断,攻击者通过Web页面的输入区域(如URL、表单等) ,用精心构造的SQL语句插入特殊字符和指令,通过和数据库交互获得私密信息或者篡改数据库信息。SQL注入攻击在Web攻击中非常流行,攻击者可以利用SQL注入漏洞获得管理员权限,在网页上加挂木马和各种恶意程序,盗取企业和用户敏感信息。
6、跨站脚本漏洞
跨站脚本漏洞是因为Web应用程序时没有对用户提交的语句和变量进行过滤或限制,攻击者通过Web页面的输入区域向数据库或HTML页面中提交恶意代码,当用户打开有恶意代码的链接或页面时,恶意代码通过浏览器自动执行,从而达到攻击的目的。跨站脚本漏洞危害很大,尤其是目前被广泛使用的网络银行,通过跨站脚本漏洞攻击者可以冒充受害者访问用户重要账户,盗窃企业重要信息。
根据前期各个漏洞研究机构的调查显示,SQL注入漏洞和跨站脚本漏洞的普遍程度排名前两位,造成的危害也更加巨大。
1.2 SQL注入攻击原理
SQL注入攻击是通过构造巧妙的SQL语句,同网页提交的内容结合起来进行注入攻击。比较常用的手段有使用注释符号、恒等式(如1=1)、使用union语句进行联合查询、使用insert或update语句插入或修改数据等,此外还可以利用一些内置函数辅助攻击。
通过SQL注入漏洞攻击网站的步骤一般如下:
第一步:探测网站是否存在SQL注入漏洞。
第二步:探测后台数据库的类型。
第三步:根据后台数据库的类型,探测系统表的信息。
第四步:探测存在的表信息。
第五步:探测表中存在的列信息。
第六步:探测表中的数据信息。
1.3 跨站脚本攻击原理
跨站脚本攻击的目的是盗走客户端敏感信息,冒充受害者访问用户的重要账户。跨站脚本攻击主要有以下三种形式:
1、本地跨站脚本攻击
B给A发送一个恶意构造的Web URL,A点击查看了这个URL,并将该页面保存到本地硬盘(或B构造的网页中存在这样的功能)。A在本地运行该网页,网页中嵌入的恶意脚本可以A电脑上执行A持有的权限下的所有命令。
2、反射跨站脚本攻击
A经常浏览某个网站,此网站为B所拥有。A使用用户名/密码登录B网站,B网站存储下A的敏感信息(如银行帐户信息等)。C发现B的站点包含反射跨站脚本漏洞,编写一个利用漏洞的URL,域名为B网站,在URL后面嵌入了恶意脚本(如获取A的cookie文件),并通过邮件或社会工程学等方式欺骗A访问存在恶意的URL。当A使用C提供的URL访问B网站时,由于B网站存在反射跨站脚本漏洞,嵌入到URL中的恶意脚本通过Web服务器返回给A,并在A浏览器中执行,A的敏感信息在完全不知情的情况下将发送给了C。
3、持久跨站脚本攻击
B拥有一个Web站点,该站点允许用户发布和浏览已发布的信息。C注意到B的站点具有持久跨站脚本漏洞,C发布一个热点信息,吸引用户阅读。A一旦浏览该信息,其会话cookies或者其它信息将被C盗走。持久性跨站脚本攻击一般出现在论坛、留言簿等网页,攻击者通过留言,将攻击数据写入服务器数据库中,浏览该留言的用户的信息都会被泄漏。
Web应用漏洞的防御实现
对于以上常见的Web应用漏洞漏洞,可以从如下几个方面入手进行防御:
1)对 Web应用开发者而言
大部分Web应用常见漏洞,都是在Web应用开发中,开发者没有对用户输入的参数进行检测或者检测不严格造成的。所以,Web应用开发者应该树立很强的安全意识,开发中编写安全代码;对用户提交的URL、查询关键字、HTTP头、POST数据等进行严格的检测和限制,只接受一定长度范围内、采用适当格式及编码的字符,阻塞、过滤或者忽略其它的任何字符。通过编写安全的Web应用代码,可以消除绝大部分的Web应用安全问题。
2) 对Web网站管理员而言
作为负责网站日常维护管理工作Web管理员,应该及时跟踪并安装最新的、支撑Web网站运行的各种软件的安全补丁,确保攻击者无法通过软件漏洞对网站进行攻击。
除了软件本身的漏洞外,Web服务器、数据库等不正确的配置也可能导致Web应用安全问题。Web网站管理员应该对网站各种软件配置进行仔细检测,降低安全问题的出现可能。
此外,Web管理员还应该定期审计Web服务器日志,检测是否存在异常访问,及早发现潜在的安全问题。
3)使用网络防攻击设备
前两种为事前预防方式,是比较理想化的情况。然而在现实中,Web应用系统的漏洞还是不可避免的存在:部分Web网站已经存在大量的安全漏洞,而Web开发者和网站管理员并没有意识到或发现这些安全漏洞。由于Web应用是采用HTTP协议,普通的防火墙设备无法对Web类攻击进行防御,因此可以使用IPS入侵防御设备来实现安全防护。
H3C IPS Web攻击防御
H3C IPS入侵防御设备有一套完整的Web攻击防御框架,能够及时发现各种已经暴露的和潜在的Web攻击。下图为对于Web攻击的总体防御框架。
图1:Web攻击防御框架,参见:
H3C IPS采用基于特征识别的方式识别并阻断各种攻击。IPS设备有一个完整的特征库,并可定期以手工与自动的方式对特征库进行升级。当网络流量进入IPS后,IPS首先对报文进行预处理,检测报文是否正确,即满足协议定义要求,没有错误字段;如果报文正确,则进入深度检测引擎。该引擎是IPS检测的核心模块,对通过IPS设备的Web流量进行深层次的分析,并与IPS攻击库中的特征进行匹配,检测Web流量是否存在异常;如果发现流量匹配了攻击特征,IPS则阻断网络流量并上报日志;否则,网络流量顺利通过。
此Web攻击防御框架有如下几个特点:
1) 构造完整的Web攻击检测模型,准确识别各种Web攻击
针对Web攻击的特点,考虑到各种Web攻击的原理和形态,在不同漏洞模型之上开发出通用的、层次化的Web攻击检测模型,并融合到特征库中。这些模型抽象出Web攻击的一般形态,对主流的攻击能够准确识别,使得模型通用化。
2) 检测方式灵活,可以准确识别变形的Web攻击
在实际攻击中,攻击者为了逃避防攻击设备的检测,经常对Web攻击进行变形,如采用URL编码技术、修改参数等。H3C根据Web应用漏洞发生的原理、攻击方式和攻击目标,对攻击特征进行了扩展。即使攻击者修改攻击参数、格式、语句等内容,相同漏洞原理下各种变形的攻击同样能够被有效阻断。这使得IPS的防御范围扩大,防御的灵活性也显著增强,极大的减少了漏报情况的出现。
3) 确保对最新漏洞及技术的跟踪,有效阻止最新的攻击
随着Web攻击出现的频率日益增高,其危害有逐步扩展的趋势。这对IPS设备在防御的深度和广度上提出了更高的要求,不仅要能够防御已有的Web攻击,更要有效的阻止最新出现的、未公布的攻击。目前,H3C已经建立起一套完整的攻防试验环境,可以及时发现潜在Web安全漏洞。同时还在继续跟踪最新的Web攻击技术和工具,及时更新Web攻击的特征库,第一时间发布最新的Web漏洞应对措施,确保用户的网络不受到攻击。
4) 保证正常业务的高效运行
检测引擎是IPS整个设备运行的关键,该引擎使用了高效、准确的检测算法,对通过设备的流量进行深层次的分析,并通过和攻击特征进行匹配,检测流量是否存在异常。如果流量没有匹配到攻击特征,则允许流量通过,不会妨碍正常的网络业务,在准确防御的同时保证了正常业务的高效运行。
结束语
互联网和Web技术广泛使用,使Web应用安全所面临的挑战日益严峻,Web系统时时刻刻都在遭受各种攻击的威胁,在这种情况下,需要制定一个完整的Web攻击防御解决方案,通过安全的Web应用程序、Web服务器软件、Web防攻击设备共同配合,确保整个网站的安全。任何一个简单的漏洞、疏忽都会造成整个网站受到攻击,造成巨大损失。此外 ,Web攻击防御是一个长期持续的工作,随着Web技术的发展和更新,Web攻击手段也不断发展,针对这些最新的安全威胁,需要及时调整Web安全防护策略,确保Web攻击防御的主动性,使Web网站在一个安全的环境中为企业和客户服务。
原文链接: