网站免受黑客攻击的9个安全提示

您可能认为您的网站没有任何值得被黑客攻击的地方,但网站一直受到攻击。大多数网站安全漏洞不是窃取您的数据或弄乱您的网站布局,而是试图将您的服务器用作垃圾邮件的电子邮件中继,或设置临时网络服务器,通常用于提供非法性质的文件. 滥用受感染机器的其他非常常见的方法包括将您的服务器用作僵尸网络的一部分,或挖掘比特币。您甚至可能被勒索软件攻击。

网站免受黑客攻击的9个安全提示

黑客经常通过编写用于搜索互联网的自动化脚本执行,以试图利用软件中已知的网站安全问题。以下是我们的九大技巧,可帮助您和您的网站安全上网。

01.保持软件最新

这似乎很明显,但确保您使所有软件保持最新对于确保您的网站安全至关重要。这适用于服务器操作系统和您可能在您的网站上运行的任何软件,例如 CMS 或论坛。当在软件中发现网站安全漏洞时,黑客会迅速尝试滥用它们。

如果您使用的是托管托管解决方案,那么您不必太担心为操作系统应用安全更新,因为托管公司应该负责这一点。

如果您在您的网站上使用第三方软件,例如 CMS 或论坛,您应该确保快速应用任何安全补丁。大多数供应商都有一个邮件列表或 RSS 提要,详细说明任何网站安全问题。WordPress、Umbraco 和许多其他 CMS 在您登录时会通知您可用的系统更新。

许多开发人员使用 Composer、npm 或 RubyGems 等工具来管理他们的软件依赖项,而出现在您依赖但没有引起任何注意的包中的安全漏洞是最容易被发现的方法之一。确保您的依赖项保持最新,并使用Gemnasium等工具在您的某个组件中宣布漏洞时获得自动通知。

02.注意SQL注入

SQL 注入攻击是指攻击者使用 Web 表单字段或 URL 参数来访问或操作您的数据库。当您使用标准 Transact SQL 时,很容易在不知不觉中将恶意代码插入查询中,这些代码可用于更改表、获取信息和删除数据。您可以通过始终使用参数化查询来轻松防止这种情况,大多数网络语言都具有此功能并且易于实现。

考虑这个查询:

"SELECT * FROM table WHERE column = '" + parameter + "';"

如果攻击者更改 URL 参数以传入 ' 或 '1'='1 这将导致查询如下所示:

"SELECT * FROM table WHERE column = '' OR '1'='1';"

由于“1”等于“1”,这将允许攻击者在 SQL 语句的末尾添加一个额外的查询,该语句也将被执行。

您可以通过显式参数化它来修复此查询。例如,如果你在 PHP 中使用 MySQLi,这应该变成:

$stmt = $pdo->prepare('SELECT * FROM table WHERE column = :value');

$stmt->execute(array('value' => $parameter));

03.防止XSS攻击

跨站脚本 (XSS) 攻击将恶意 JavaScript 注入您的页面,然后在您用户的浏览器中运行,并且可以更改页面内容或窃取信息以发送回攻击者。例如,如果您在没有验证的情况下在页面上显示评论,那么攻击者可能会提交包含脚本标签和 JavaScript 的评论,这些评论可以在每个其他用户的浏览器中运行并窃取他们的登录 cookie,从而允许攻击控制每个用户的帐户查看评论的用户。您需要确保用户无法将活动的 JavaScript 内容注入您的页面。

这在现代 Web 应用程序中是一个特别关注的问题,其中页面现在主要由用户内容构建,并且在许多情况下生成 HTML,然后也由 Angular 和 Ember 等前端框架解释。这些框架提供了许多 XSS 保护,但是混合服务器和客户端渲染也创造了新的和更复杂的攻击途径:不仅将 JavaScript 注入 HTML 有效,而且您还可以通过插入 Angular 指令或使用 Ember 来注入将运行代码的内容帮手。

这里的关键是关注您的用户生成的内容如何超出您期望的范围并被浏览器解释为您想要的其他内容。这类似于防御 SQL 注入。动态生成 HTML 时,使用显式地进行您要查找的更改的函数(例如,使用 element.setAttribute 和 element.textContent,它们将被浏览器自动转义,而不是手动设置 element.innerHTML),或使用函数在您的模板工具中自动进行适当的转义,而不是连接字符串或设置原始 HTML 内容。

XSS 防御者工具箱中的另一个强大工具是内容安全策略 (CSP)。CSP 是您的服务器可以返回的标头,它告诉浏览器限制在页面中执行 JavaScript 的方式和内容,例如禁止运行不在您的域中托管的任何脚本、禁止内联 JavaScript 或禁用 eval()。Mozilla 有一个很好的指南,其中包含一些示例配置。这使得攻击者的脚本更难工作,即使他们可以将它们放入您的页面。

04. 当心错误信息

请注意您在错误消息中泄露了多少信息。只向您的用户提供最少的错误,以确保他们不会泄露您服务器上的秘密(例如 API 密钥或数据库密码)。也不要提供完整的异常详细信息,因为这些可以使 SQL 注入等复杂攻击变得更加容易。在您的服务器日志中保留详细的错误信息,并仅向用户显示他们需要的信息。

05. 双向验证

验证应始终在浏览器和服务器端进行。浏览器可以捕获简单的故障,例如空的必填字段以及在仅数字字段中输入文本时。然而,这些可以被绕过,您应该确保检查这些验证和更深入的验证服务器端,因为不这样做可能会导致恶意代码或脚本代码被插入到数据库中,或者可能导致您的网站出现不良结果。

06.检查您的密码

每个人都知道他们应该使用复杂的密码,但这并不意味着他们总是这样做。对您的服务器和网站管理区域使用强密码至关重要,但同样重要的是坚持为您的用户提供良好的密码实践以保护其帐户的安全。

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

密码应始终存储为加密值,最好使用单向散列算法,例如 SHA。使用这种方法意味着当您对用户进行身份验证时,您只需要比较加密的值。为了获得额外的网站安全性,最好对密码进行加盐,每个密码使用一个新的加盐。

如果有人入侵并窃取您的密码,使用散列密码可能有助于破坏限制,因为无法解密它们。有人能做的最好的事情是字典攻击或蛮力攻击,基本上是猜测每个组合,直到找到匹配项。使用加盐密码时,破解大量密码的过程甚至更慢,因为每个猜测都必须针对每个加盐密码单独进行散列,这在计算上非常昂贵。

值得庆幸的是,许多 CMS 提供了开箱即用的用户管理,并内置了许多这些网站安全功能,尽管可能需要一些配置或额外的模块才能使用加盐密码(Drupal 7 之前)或设置最小密码强度。如果您使用的是 .NET,那么值得使用会员提供程序,因为它们非常可配置,提供内置的网站安全性并包括用于登录和密码重置的现成控件。

07.避免文件上传

允许用户将文件上传到您的网站可能是一个很大的网站安全风险,即使只是为了更改他们的头像。风险在于,任何上传的文件,无论看起来多么无辜,都可能包含一个脚本,当在您的服务器上执行时,该脚本会完全打开您的网站。

如果您有文件上传表单,那么您需要非常怀疑地对待所有文件。如果您允许用户上传图像,则不能依赖文件扩展名或 mime 类型来验证文件是图像,因为这些很容易被伪造。即使打开文件并读取标题,或者使用函数检查图像大小也不是万无一失的。大多数图像格式允许存储可能包含可由服务器执行的 PHP 代码的注释部分。

那么你能做些什么来防止这种情况发生呢?最终,您希望阻止用户执行他们上传的任何文件。默认情况下,Web 服务器不会尝试执行带有图像扩展名的文件,但不要仅仅依靠检查文件扩展名,因为已知名称为 image.jpg.php 的文件可以通过。

一些选项是在上传时重命名文件以确保正确的文件扩展名,或更改文件权限,例如 chmod 0666 使其无法执行。如果使用 *nix,您可以创建一个 .htaccess 文件(见下文),该文件仅允许访问设置文件,防止前面提到的双扩展名攻击。

deny from all

<Files ~ "^\w+\.(gif|jpe?g|png)$">

order deny,allow

allow from all

</Files>

最终,推荐的解决方案是完全阻止直接访问上传的文件。这样,上传到您网站的任何文件都存储在 webroot 之外的文件夹中或作为 blob 存储在数据库中。如果您的文件不能直接访问,您将需要创建一个脚本来从私有文件夹(或 .NET 中的 HTTP 处理程序)中获取文件并将它们传送到浏览器。图片标签支持不是图片的直接 URL 的 src 属性,因此如果您在 HTTP 标头中设置正确的内容类型,您的 src 属性可以指向您的文件传递脚本。例如:

<img src="/imageDelivery.php?id=1234" />

<?php
// imageDelivery.php

// Fetch image filename from database based on $_GET["id"]
...

// Deliver image to browser
Header('Content-Type: image/gif');
readfile('images/'.$fileName);

?>

大多数托管服务提供商会为您处理服务器配置,但如果您在自己的服务器上托管您的网站,那么您需要检查的事项很少。

确保您已设置防火墙,并阻止所有非必要端口。如果可能的话,设置一个 DMZ(非军事区),只允许外界访问端口 80 和 443。尽管如果您无法从内部网络访问服务器,这可能是不可能的,因为您需要打开端口以允许上传文件并通过 SSH 或 RDP 远程登录到您的服务器。

如果您允许从 Internet 上传文件,请仅使用安全传输方法到您的服务器,例如 SFTP 或 SSH。

如果可能,让您的数据库在与 Web 服务器不同的服务器上运行。这样做意味着无法直接从外部访问数据库服务器,只有您的 Web 服务器可以访问它,从而最大限度地降低数据泄露的风险。

最后,不要忘记限制对服务器的物理访问。

08.使用HTTPSHTTPS

是一种用于通过 Internet 提供安全性的协议。HTTPS 保证用户正在与他们期望的服务器交谈,并且没有其他人可以拦截或更改他们在传输中看到的内容。

如果您有任何用户可能想要私有的东西,强烈建议您只使用 HTTPS 来传递它。这当然意味着信用卡和登录页面(以及它们提交到的 URL),但通常也更多的是您的网站。例如,登录表单通常会设置一个 cookie,该 cookie 与登录用户向您的站点发出的所有其他请求一起发送,并用于验证这些请求。窃取此信息的攻击者将能够完美地模仿用户并接管他们的登录会话。要击败此类攻击,您几乎总是希望对整个站点使用 HTTPS。

这不再像以前那样棘手或昂贵。Let's Encrypt提供完全免费和自动化的证书,您需要启用 HTTPS,并且现有的社区工具可用于各种常见平台和框架来自动为您设置。

值得注意的是,谷歌已经宣布,如果你使用 HTTPS,他们会提升你的搜索排名,这也给 SEO 带来了好处。不安全的 HTTP 即将淘汰,现在是升级的时候了。

已经在各处使用 HTTPS?进一步了解如何设置 HTTP 严格传输安全 (HSTS),这是一个简单的标头,您可以将其添加到服务器响应中,以禁止整个域的不安全 HTTP。

09. 获取网站安全工具

一旦你认为你已经做了所有你能做的,那么就该测试你的网站安全性了。最有效的方法是使用一些网站安全工具,通常称为渗透测试或简称渗透测试。

有许多商业和免费产品可以帮助您。它们的工作原理与脚本黑客类似,因为它们测试所有已知的漏洞并尝试使用前面提到的一些方法(例如 SQL 注入)来破坏您的站点。

一些值得一看的免费工具:

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

自动化测试的结果可能令人生畏,因为它们存在大量潜在问题。重要的是首先关注关键问题。通常报告的每个问题都带有对潜在漏洞的很好解释。您可能会发现某些中/低级问题对您的站点来说不是问题。

您可以采取一些进一步的步骤来手动尝试通过更改 POST/GET 值来破坏您的站点。调试代理可以在这里为您提供帮助,因为它允许您拦截浏览器和服务器之间的 HTTP 请求的值。一个名为Fiddler的流行免费软件应用程序是一个很好的起点。

那么您应该尝试更改请求的哪些内容?如果您的页面应该只对登录用户可见,请尝试更改 URL 参数,例如用户 ID 或 cookie 值,以尝试查看其他用户的详细信息。另一个值得测试的领域是表单,更改 POST 值以尝试提交代码以执行 XSS 或上传服务器端脚本。

文章链接: https://www.mfisp.com/4249.html

文章标题:网站免受黑客攻击的9个安全提示

文章版权:梦飞科技所发布的内容,部分为原创文章,转载请注明来源,网络转载文章如有侵权请联系我们!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
IDC云库

防止勒索软件攻击的最佳实践

2022-2-22 11:26:34

IDC云库

视频流是如何工作的?流媒体常见的问题解答

2022-2-23 10:44:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
客户经理
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索

梦飞科技 - 最新云主机促销服务器租用优惠