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

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

浏览次数:
信息来源: 用户投稿
更新日期: 2026-02-03
文章简介

您可能认为您的网站没有任何值得被黑客攻击的地方,但网站一直受到攻击。大多数网站安全漏洞不是窃取您的数据或弄乱您的网站布局,而是试图将您的服务器用作垃圾邮件的电子邮件中继,或设置临时网络服务器,通常用于

2025阿里云双十一服务器活动

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

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

01.保持软件最新

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

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

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

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

02.注意SQL注入

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

"SELECT*FROMtableWHEREcolumn='"+parameter+"';"

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

"SELECT*FROMtableWHEREcolumn=''OR'1'='1';"

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

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

$stmt=$pdo->prepare('SELECT*FROMtableWHEREcolumn=: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。使用这种方法意味着当您对用户进行身份验证时,您只需要比较加密的值。为了获得额外的网站安全性,最好对密码进行加盐,每个密码使用一个新的加盐。

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

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

07.避免文件上传

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

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

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

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

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

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

<imgsrc="https://www.mfisp.com/imageDelivery.php?id=1234"/>

//Fetchimagefilenamefromdatabasebasedon$_GET["id"]

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'sEncrypt提供完全免费和自动化的证书,您需要启用HTTPS,并且现有的社区工具可用于各种常见平台和框架来自动为您设置。

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

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

09.获取网站安全工具

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

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

  • Netsparker(提供免费社区版和试用版)。适合测试SQL注入和XSS
  • OpenVAS自称是最先进的开源安全扫描器。适合测试已知漏洞,目前扫描超过25,000个。但它可能很难设置,并且需要安装仅在*nix上运行的OpenVAS服务器。OpenVAS在成为闭源商业产品之前是Nessus的一个分支。
  • SecurityHeaders.io(免费在线检查)。一种快速报告域已启用并正确配置的上述安全标头(例如CSP和HSTS)的工具。
  • XenotixXSSExploitFramework来自OWASP(开放式Web应用程序安全项目)的工具,其中包含大量XSS攻击示例,您可以运行这些示例来快速确认您的站点的输入是否在Chrome、Firefox和IE中易受攻击。
  • 自动化测试的结果可能令人生畏,因为它们存在大量潜在问题。重要的是首先关注关键问题。通常报告的每个问题都带有对潜在漏洞的很好解释。您可能会发现某些中/低级问题对您的站点来说不是问题。

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

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

    标签:
    vultr印度班加罗尔Bangalorevps测评分享(印度班加罗尔怎么样)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!