联系我们 · 公司总机 +6011-6353 3599 · · EN | BM | 中文
职场贴士

网站安全问题

Logarajah Thambyrajah · 2017年8月10日 · 营销科技 · 阅读时间 1 分钟

咨询 高级 WebOps (MC-AWO)查看课程

网站安全问题

如今,网站和网上业务是主要的收入来源,但大多数网站拥有者却忽略了网站安全问题的必要性。只要网站安全做得好,业务销售可以成倍增长。客户表示,网站安全是他们决定是否在某个网站购物的主要原因。进行任何网上交易时,人人都希望有安全的支付网关。遗憾的是,网络犯罪是增长最快的犯罪类型之一。

我们经常听到各种网站安全问题,例如网站被黑、信用卡资料被盗、感染病毒等。这会对您的网站和声誉造成很大损害。木马、蠕虫、恶意软件和间谍软件等程序会依附在您的系统上,  然后监视或记录您的一举一动。因此,网站安全薄弱可能导致您的个人资料外泄。

会遇到哪些网站安全问题?如何克服?

网站安全问题的例子之一,是您的银行资料和住家地址可能落入犯罪分子手中,他们随后可能以您为目标。犯罪分子可以利用收集到的资料达成自己的目的。这也可能影响您家人、朋友或员工的安全。

保护网站各个部分的安全措施有许多不同类型和层级:防病毒软件、通过加密连接运行网站、展示隐私政策和信任标章以证明网站合法、至少每季度进行一次 PCI 扫描。这些措施能主动让您的网站跟上不断变化的科技世界。

首先,您应该选择一家重视服务器安全的网站托管服务商。此外,您可以为网站设立独立的安全中心,定期进行扫描和更新,以避免网站安全问题。您的网站往往代表企业的公众形象。网站安全至关重要,因为您要尽一切努力,确保网站对您和客户都是安全的。

网站安全问题、风险与威胁

网站安全问题、风险与威胁有哪些不同类型?什么因素会让您的企业和网站成为有吸引力或容易得手的目标?  许多小型企业认为自己不值得攻击者下手,但正如下文所述,这种假设完全错误。所有网上实体都面对各种安全风险和威胁,应该加以了解和评估。

安全风险

iWeb 客户现在可以使用我们新推出的一系列网站服务来提升网站安全,包括防火墙、DDoS 防护、内容分发优化(CDN)和安全监控。

安全威胁的类型

网站安全威胁的演变速度,与它们企图攻破的技术一样快。单是 CVE(Common Vulnerabilities & Exposures,通用漏洞披露)数据库就收录了超过 59,000 个已知的信息安全威胁,在数据库中搜索 apache,就会出现超过 500 个已知漏洞。

虽然用来获取数据和篡改代码的技术千差万别,但安全入侵通常有以下四个目的之一:

  • 访问数据库,窃取或破坏个人或敏感数据
  • 篡改网站代码,以改变用户看到的内容
  • 拦截个人和敏感数据
  • 拒绝服务(DoS)攻击,使服务无法使用

为什么会出现网站安全问题?——黑客的动机

黑客攻击网站的动机,从获取非常具体的信息、为攻击更大目标铺路,到挑战篡改知名或防护严密的网站,不一而足。有些因素会招来安全攻击,概述如下。如果您是中小企业,以为这只适用于大公司,请再想一想。

  1. 有价值的数据和信息

网站数据库中的信息越有价值,就越可能成为攻击目标。如果您的记录包含可能被用来诈骗的敏感或财务信息,您的数据库对黑客就更有吸引力,因为他们可以使用或出售这些信息来牟利。

为了保护消费者免受这类风险,电子商务网站和其他收集客户信用卡及付款资料的网站,必须符合 PCI(Payment Card Industry,支付卡行业)标准。

请记住,即使是基本的个人资料也可能有价值。它可能被用来冒充他人、散播恶意软件,或者只是出于个人动机去扰乱您的服务。

  1. 商业和政治间谍活动

数据库或公司服务器中的信息也许对诈骗者没用,但对竞争对手、相关公司、行业甚至政府却可能非常有用。被盗的数据或用户名和密码,可能让别人访问您的客户账户和数据,或您机构的情报、机密文件或电子邮件。

据 Bloomberg 报道:“美国情报官员在上个月发布的一份报告中总结,中国已把商业间谍活动作为其经济政策的组成部分,通过窃取公司机密来帮助它超越美国和其他外国竞争对手,以实现成为全球最大经济体的目标。”

如果您的差异化优势或竞争优势来自专有情报或代码,甚至来自您想保密的先发优势或营销活动,您就可能成为间谍活动或盗窃的目标。

  1. 容易得手的目标

自动化漏洞扫描,加上企业与客户之间日益分散的社交互动,意味着在应对威胁上投入资源较少的中小企业,正成为数量越来越多、也越来越容易得手的目标。据 Symantec.com 称,2012 年针对小型企业的定向攻击占所有安全攻击的 31%,高于前一年的 18%。

网络应用漏洞扫描器会扫描网站,查找不安全的服务器配置和其他已知安全漏洞,这些漏洞会助长 XSS(跨站脚本)、SQL 注入、命令执行、目录遍历和不安全服务器配置等攻击。如果您的网站有漏洞,被黑客发现并利用的可能性会越来越高。  随着社交媒体沟通增加,消费者已习惯通过各种社交媒体收到公司的再营销和 CRM 信息,这些信息往往附带优惠券、折扣和其他奖励。这使网络钓鱼骗局——冒充某个机构来获取个人和财务信息,或散播恶意软件——比以往任何时候都更受潜在攻击者青睐。

  1. 跳板攻击

小型企业同样难逃间谍活动。安全防御薄弱的企业,越来越常被当作“跳板”,用来对它们所供货的大型机构发动更有价值的攻击。

例如,攻击者可以窃取与您某个大客户有关的个人资料和文件,然后针对该机构内的某人精心设计一封电子邮件(称为“社会工程”)。您的网站或应用程序也可能被利用,在已知会使用它的目标机构的电脑上安装恶意软件:攻击者在您的网站中注入代码,把用户重定向到另一个网站,再由该网站感染目标的电脑(称为“水坑”攻击)。

  1. 非经济动机

并非所有黑客攻击都有经济动机。对于把攻击网站当作运动的黑客来说,安全做得最好的网站,例如互联网安全专家自己的网站,反而是具挑战性的目标。同样,天然有政治或社会对头的网站也可能成为热门目标。

保护网站免受黑客攻击的 9 个安全贴士

您也许认为自己的网站没什么值得黑客下手的,但网站被攻破的事一直在发生。大多数网站安全入侵并不是为了窃取数据或篡改网站,而是企图把您的服务器当作发送垃圾邮件的中转站,或者架设临时网页服务器,通常用来提供非法性质的文件。滥用被攻破机器的其他常见方式,包括把您的服务器变成僵尸网络的一部分,或用来挖比特币。您甚至可能遭到勒索软件攻击。

黑客攻击通常由自动化脚本执行,这些脚本在互联网上四处搜寻,企图利用软件中已知的网站安全问题。以下是我们的十大贴士,帮助您和您的网站在网上保持安全。

  1. 保持软件最新

这看似理所当然,但确保所有软件保持最新,对网站安全至关重要。这既适用于服务器操作系统,也适用于网站上运行的任何软件,例如 CMS 或论坛。一旦软件被发现有网站安全漏洞,黑客很快就会试图利用。

如果您使用托管主机方案,就不必太担心操作系统的  安全更新,因为托管公司应该会处理。如果您在网站上使用第三方软件,例如 CMS 或论坛,就应确保尽快安装任何安全补丁。大多数供应商都有邮件列表或 RSS 订阅,详细说明任何网站安全问题。WordPress、Umbraco 和许多其他 CMS 会在您登录时通知您有可用的系统更新。

许多开发人员使用 Composer、npm 或 RubyGems 等工具管理软件依赖项,而您所依赖却没有留意的软件包中出现安全漏洞,是最容易中招的情况之一。请确保依赖项保持最新,并使用 Gemnasium 等工具,在某个组件公布漏洞时自动收到通知。

  1. SQL 注入

SQL 注入攻击是指攻击者利用网页表格字段或 URL 参数来访问或操纵您的数据库。使用标准 Transact SQL 时,很容易在不知不觉中把恶意代码插入查询,而这些代码可能被用来更改数据表、获取信息和删除数据。只要始终使用参数化查询,就能轻松防止这种情况;大多数网页语言都有这个功能,而且容易实现。

  1. XSS

跨站脚本(XSS)攻击会把恶意 JavaScript 注入您的页面,然后在用户的浏览器中运行,可以更改页面内容,或窃取信息发回给攻击者。例如,如果您在页面上显示评论而不作验证,攻击者就可能提交包含 script 标签和 JavaScript 的评论,这些代码可能在其他每个用户的浏览器中运行,窃取他们的登录 cookie,让攻击者控制每个  看过该评论的用户的账户。您需要确保用户无法把可执行的 JavaScript 内容注入您的页面。

这在现代网络应用中尤其值得关注,因为现在的页面主要由用户内容构成,而且很多时候生成的 HTML 还会被 Angular 和 Ember 等前端框架解析。这些框架提供许多 XSS 防护,但混合服务器端和客户端渲染也会带来新的、更复杂的攻击途径:不仅把 JavaScript 注入 HTML 有效,还可以通过插入 Angular 指令或使用 Ember helper 来注入会执行代码的内容。

关键是要关注用户生成的内容可能如何越出您预期的边界,被浏览器解读成与您原意不同的东西。这与防御 SQL 注入相似。动态生成 HTML 时,请使用明确执行所需更改的函数(例如 element.setAttribute 和 element.textContent,浏览器会自动对其转义,而不是手动设置 element.innerHTML),或使用模板工具中会自动适当转义的函数,而不是拼接字符串或设置原始 HTML 内容。

XSS 防御工具箱中的另一个强大工具是内容安全策略(Content Security Policy,CSP)。CSP 是服务器可以返回的一个标头,它告诉浏览器限制页面中执行 JavaScript 的方式和内容,例如禁止运行任何不在您域名上托管的脚本、禁止内联 JavaScript,或禁用 eval()。Mozilla 有一份很好的指南,附有一些配置示例。这样即使攻击者能把脚本放进您的页面,也更难让脚本生效。

  1. 错误信息

小心错误信息中透露了多少信息。只向用户提供最少的错误信息,确保不会泄露服务器上的机密(例如 API 密钥或数据库密码)。也不要提供完整的异常详情,因为这会让 SQL 注入等复杂攻击容易得多。把详细错误记录在服务器日志中,只向用户显示他们需要的信息。

  1. 服务器端验证/表格验证

验证应始终在浏览器端和服务器端同时进行。浏览器可以发现简单的错误,例如必填字段留空,或在只能填数字的字段中输入文字。不过,这些检查可以被绕过,所以您应确保在服务器端进行这些验证以及更深入的验证;否则,恶意代码或脚本代码可能被插入数据库,或在网站上造成不良后果。

  1. 密码

人人都知道应该使用复杂的密码,但并不代表他们总会这样做。服务器和网站管理区使用强密码至关重要;同样重要的是,要求用户养成良好的密码习惯,以保护他们账户的安全。

尽管用户可能不喜欢,但强制执行密码要求,例如至少约八个字符、包含一个大写字母和一个数字,长远来说有助于保护他们的信息。

密码应始终以加密值储存,最好使用 SHA 等单向哈希算法。使用这种方法,意味着验证用户时,您只会比较加密后的值。为了加强网站安全,最好为密码加盐,并为每个密码使用新的盐值。

万一有人入侵并窃取您的密码,使用哈希密码有助于控制损害,因为这些密码无法被解密。对方最多只能进行字典攻击或暴力破解,基本上就是逐一猜测每种组合,直到找到匹配为止。使用加盐密码时,破解大量密码的过程会更慢,因为每次猜测都必须针对每个“盐值 + 密码”分别进行哈希运算,计算成本非常高。

幸好,许多 CMS 都内置用户管理功能,并已包含许多这类网站安全功能,不过可能需要一些配置或额外模块,才能使用加盐密码(Drupal 7 之前)或设置  最低密码强度。如果您使用 .NET,值得使用 membership provider,因为它们可灵活配置,提供内置的网站安全功能,并包含现成的登录和重设密码控件。

  1. 文件上传

允许用户上传文件到您的网站可能是很大的网站安全风险,即使只是用来更换头像。风险在于,任何上传的文件,不论看起来多么无害,都可能含有脚本,一旦在服务器上执行,就会让您的网站完全暴露。

如果您有文件上传表格,就需要对所有文件高度警惕。如果您允许用户上传图片,就不能依靠文件扩展名或 MIME 类型来验证文件是否为图片,因为这些很容易伪造。即使打开文件读取文件头,或用函数检查图片尺寸,也并非万无一失。大多数图片格式允许储存注释段,而其中可能含有可被服务器执行的 PHP 代码。

那么,您可以怎样防范?归根结底,您要阻止用户执行他们上传的任何文件。默认情况下,网页服务器不会尝试执行带有图片扩展名的文件,但不建议只依靠检查文件扩展名,因为曾有名为 image .jpg, .php 的文件成功蒙混过关。

一些做法是在上传时重新命名文件,以确保扩展名正确,或更改文件权限,例如 chmod 0666,使其无法被执行。如果使用 *nix,您可以建立一个 .htaccess 文件,只允许访问指定的文件,以防止前面提到的双扩展名攻击。

  1. HTTPS

超文本传输安全协议(Hyper Text Transfer Protocol Secure,HTTPS)是一种用于在互联网上提供安全保障的协议。HTTPS 向用户保证,他们正在与预期的服务器通信,而且传输途中没有人能拦截或更改他们看到的内容。

如果有任何用户可能希望保密的内容,强烈建议只用 HTTPS 来传送。这当然包括信用卡和登录页面(以及它们提交的 URL),但通常也包括网站的更多部分。例如,登录表格通常会设置一个 cookie,已登录用户对网站发出的每个其他请求都会附带这个 cookie,用来验证这些请求。攻击者一旦窃取它,就能完美冒充用户,接管其登录会话。要防御这类攻击,您几乎总是需要在整个网站使用 HTTPS。

不过,这已不像以前那样麻烦或昂贵。Let’s Encrypt 提供完全免费、自动化的证书,这是启用 HTTPS 所需要的,而且已有现成的社区工具,可为各种常见平台和框架自动完成设置。

值得一提的是,Google 已宣布,如果您使用 HTTPS,就会提升您在搜索排名中的位置,因此这对 SEO 也有好处。不过,有胡萝卜也有棍子:从 2017 年 1 月起,Chrome 和其他浏览器计划在每个没有这样做的网站上显示越来越醒目的警告。不安全的 HTTP 正在被淘汰,现在就是升级的时候。

已经全站使用 HTTPS?可以更进一步,考虑设置 HTTP 严格传输安全(HSTS)。这是一个可以轻松加到服务器响应中的标头,用来禁止整个域名使用不安全的 HTTP。

  1. 网站安全工具

当您认为已经尽了一切努力,就该测试网站安全了。最有效的方法是使用一些网站安全工具,这通常称为渗透测试,简称 pen test。

有许多商业和免费产品可以协助您进行测试。它们的运作原理与黑客使用的脚本相似:测试所有已知的漏洞利用方式,并尝试攻破您的网站,例如使用前面提到的 SQL 注入等方法。

一些值得一试的免费网站安全工具:

  • Netsparker(提供免费社区版和试用版):适合测试 SQL 注入和 XSS。OpenVAS:号称最先进的开源安全扫描器,适合测试已知漏洞,目前可扫描超过 25,000 个漏洞。但它可能很难设置,而且需要安装 OpenVAS 服务器,而该服务器只能在 *nix 上运行。
  • OpenVAS 是 Nessus 在成为闭源商业产品之前的一个分支。
  • SecurityHeaders.io(免费在线检查):一个可以快速报告某个域名已启用并正确配置上述哪些安全标头(例如 CSP 和 HSTS)的工具。
  • Xenotix XSS Exploit Framework:来自 OWASP(Open Web Application Security Project,开放式 Web 应用程序安全项目)的工具,包含大量 XSS 攻击示例。您可以运行这些示例,快速确认网站的输入在 Chrome、Firefox 和 IE 中是否存在漏洞。

自动化测试的结果可能令人望而生畏,因为它会列出大量潜在问题。重要的是先集中处理关键问题。报告中的每个问题通常都附有对潜在漏洞的详细说明。您可能会发现,一些中低级别的问题对您的网站并不构成威胁。

此外,如果您想更进一步,可以亲自尝试攻破自己的网站,方法是修改 POST/GET 值。调试代理可以在这方面帮到您,因为它让您可以拦截 HTTP 请求的值;它位于您的浏览器和服务器之间。一个名为 Fiddler 的热门免费软件是不错的起点。

那么,您应该尝试修改请求中的什么?如果您有一些页面只应让已登录用户看到,我会尝试更改 URL 参数,例如用户 ID 或 cookie 值,看看能否查看其他用户的资料。除此之外,另一个值得测试的地方是表格,例如更改 POST 值,尝试提交代码以执行 XSS,或上传服务器端脚本。

希望这些贴士能帮助您保护网站和信息的安全。幸好大多数 CMS 都内置许多网站安全功能。但了解最常见的安全漏洞利用方式仍是好事,这样您就能确保自己有所防备。

在课程中学习这项技能

高级 WebOps 2天 · HRD Corp Claimable Course →

获取报价

请告诉我们课程、学员人数和月份。我们会在工作日 24 小时内回复报价和课程大纲。