如何保护您的网站?



在寻找使我们至少可以一定程度确定的现代方法和工具时,我们声称该网站已受到保护,免受未来的黑客攻击(每个人都将受到攻击,毕竟没有人会怀疑吗?如果没有, ,那么这只是时间问题),我们在本文中考虑了一些建议。

如果公司的声誉,网络资源的安全性和客户数据对您来说不是空话,那么这是每个人都应该对自己的Web资源应采取的特定操作的一小部分但很重要的清单。

有几种保护网站的基本方法:

  • 提供针对DDoS攻击的保护;
  • 连接SSL证书;
  • 使用可靠的托管 ;
  • 使用安全的插件/库/框架/ CMS(以下称为“第三方模块”);
  • SQL- XSS-;
  • - ;
  • - ;
  • , ;
  • , -, .

自然,每个项目都有其自己的“但是”和一些子项目,应引起注意。还可以根据以下注意事项将它们分为子组:某些操作需要一次性连接,配置和罕见的运行状况检查(设置主机和SSL证书),而其他操作则需要不断进行检查,更新并需要密切注意(其他所有事项)。

可靠的托管和SSL


因此,首先,我们的武器库拥有可靠的服务器或共享主机,其管理将不在本文讨论范围之内。对于连接SSL证书,这是一项强制性措施,即使注释在这里也是多余的。

DDoS防护


如果您的托管服务提供商提供了防御DDoS攻击的服务,或者您使用了反DDoS服务的服务,则可以认为此问题是封闭的,但是为什么不加强保护并自己进行保护,这无疑是一项耗时的任务,并且意味着同时进行使用以下技术:如果将Apache用作Web服务器,则需要在其前面放置一个缓存代理-Nginx或Lighttpd,但是最好在前端使用Nginx,但要有几个附加组件(限制Nginx中缓冲区和连接的大小,配置超时和等等;使用testcookie-nginx模块;使用URL过滤并提供非标准代码444,该代码可让您关闭连接但不返回任何内容);在某些情况下,请使用地理锁定;自动分析网站日志的过程,尤其要注意流量,服务器响应时间,错误数量和每秒请求数量。

第三方安全


关于在其应用程序中使用安全第三方模块的建议,该主题可能是最重要的主题之一,因为大多数恶意攻击都是通过第三方模块发生的。本段的实质是使用具有内置安全功能的框架和库,这些框架和库将帮助开发人员最大程度地减少实施过程中漏洞的出现。我想强调有关此项目的更详细的建议:使用来自社区支持并积极开发的可信任来源的第三方模块;更新所有第三方模块的列表;仅使用应用程序内所需的功能。

SQL注入和XSS攻击


关于防范SQL注入和XSS攻击的建议需要最详细的说明,因为此处攻击者的目的是数据库中的特定数据(SQL注入)和用户数据(XSS攻击)。还值得理解的是,与SQL注入相关的问题涵盖了广泛的部分,内容涉及提供对所有数据仓库(包括关系数据库和NoSQL数据库)的安全访问,还包括查询安全性问题(您必须避免将非法输入作为SQL-命令和最佳解决方案是使用可应用于SQL / OQL结构和存储过程的参数化查询),配置(您需要确保正确配置了现有的DBMS安全工具和其安装平台),身份验证(必须在安全通道上执行)和连接(由于存在几种与数据库交互(通过服务或API)的方式,因此必须使用加密和身份验证来确保连接的安全性)。

对于跨站点脚本(XSS-attack),在这种情况下,严重程度的后果可能是由基于文档对象模型(DOM)反映的XSS或XSS引起的,并且在用户浏览器中执行代码的跨站点脚本可能会导致严重的后果窃取凭据,拦截会话或安装恶意软件。在这种情况下,主要的保护措施是在服务器端进行筛选(在字符或行之前添加某些字符组合以防止其错误解释),在服务器端对数据进行编码(将某些字符转换为对解释器来说没有危险的字符组合),并使用一组HTTP标头特别是带有HttpOnly和Secure参数的Set-Cookie,以及值为1的X-XSS-Protection。

用于防止SQL注入和跨站点脚本编写的常见安全措施是检查所有输入的语法和语义。句法规范应理解为输入数据与预期表示形式的完全对应,语义规范表示输入数据没有超出特定功能的范围。

记录和监控


在考虑防御DDoS攻击的方法时,已经提到了有关记录所有事件和监视安全事件的建议,但是在这种情况下,问题的更广泛方面与检测和应对攻击以及调查已经发生的安全事件有关。因此,除了Web服务器提供的标准日志记录工具之外,您还需要确保记录了事件时间和用户ID以及特定于网站的潜在危险活动。如果检测到恶意活动,则您的应用程序应阻止用户会话或按IP地址阻止,通常应采取措施并通知管理员。在这里,我们谈论的是诸如WAF或IDS / IPS之类的工具。

后备


至于网站和所有数据的定期备份,在这里您需要考虑该数据的存储位置和类型。一种有效的方法是对关键数据和备份的存储进行加密,以及将备份文件存储在文件系统中,而不是存储在不同的位置上,毫无疑问,安全性无疑是安全的,并且始终可以快速部署。

12345还是qwerty?


使用强密码和复杂密码的建议不仅与密码有关,而且与认证和用户会话管理有关。身份验证分为三个级别,仅密码的使用仅指第一个-最简单的级别(第二个是多因素身份验证;第三个是基于加密的身份验证)。但是,即使在这里,对于密码本身,密码恢复机制以及密码的安全存储也有许多要求。会话管理使您可以监视用户身份验证的状态,以便在不重新身份验证的情况下使用网站。还需要创建和完成会话。

管理面板保护


最终建议是保护网站的管理面板,因为它是整个系统的弱点之一,这归因于与添加/编辑帖子和页面,使用文件等相关的广泛功能。因此,重要的条件是确保适当的访问控制,以及最大程度地隐瞒网络犯罪分子对行政小组的位置,方法是将地址简单地转移到非标准地址,并通过防止暴力破解,通过IP地址过滤等方式最大程度地保护此入口点。创建访问控制系统时,应遵循以下原则:通过访问控制系统发送所有请求;默认情况下拒绝访问(即,如果未获得特别授权,则拒绝该请求);所有用户的最低权限,程序或过程;拒绝使用在代码中硬编码的访问控制角色模型;注册与访问控制有关的所有事件。

结论


这篇评论文章着眼于提高网站安全性的一些技术。每个单独的建议都应该进行单独的审查,但是即使进行了如此简短的审查,也有一件事情很明确-确保安全的方法应该是全面而系统的,不应容忍。您需要仔细地进行访问控制,使最新的第三方模块保持最新状态,过滤输入数据等等。有什么要补充的吗?请务必分享评论。



作为广告


VDSina提供可靠的服务器,可每日或一次性付款,每台服务器都连接到500兆位的Internet通道,并且不受DDoS攻击!


All Articles