1. 跨站脚本(XSS)
Precise Security近期的一项研究表明,跨站脚本攻击大约占据了所有攻击的40%,是最为常见的一类网络攻击。攻击者通过注入恶意脚本来获取用户的敏感信息或执行恶意操作。防范措施包括对用户输入进行正确的验证和过滤、使用安全的编码方式、使用内容安全策略(Content Security Policy)限制脚本加载等。
跨站脚本针对的是网站的用户,而不是Web应用本身。恶意黑客在有漏洞的网站里注入一段代码,然后网站访客执行这段代码。此类代码可以入侵用户账户,激活木马程序,或者修改网站内容,诱骗用户给出私人信息。
设置Web应用防火墙(WAF)可以保护网站不受跨站脚本攻击危害。WAF就像个过滤器,能够识别并阻止对网站的恶意请求。购买网站托管服务的时候,Web托管公司通常已经为你的网站部署了WAF,但你自己仍然可以再设一个。
2. 注入攻击
攻击者通过注入恶意的 SQL 语句来获取或修改数据库的数据。防范措施包括使用参数化查询或预编译语句、限制数据库用户的权限、过滤用户输入、定期更新和维护数据库等。
注入攻击方法直接针对网站和服务器的数据库。执行时,攻击者注入一段能够揭示隐藏数据和用户输入的代码,获得数据修改权限,全面俘获应用。
保护网站不受注入攻击危害,主要落实到代码库构建上。比如说,缓解SQL注入风险的首选方法就是始终尽量采用参数化语句。更进一步,可以考虑使用第三方身份验证工作流来外包你的数据库防护。
3. 模糊测试
开发人员使用模糊测试来查找软件、操作系统或网络中的编程错误和安全漏洞。然而,攻击者可以使用同样的技术来寻找你网站或服务器上的漏洞。
采用模糊测试方法,攻击者首先向应用输入大量随机数据(模糊)让应用崩溃。下一步就是用模糊测试工具发现应用的弱点。如果目标应用中存在漏洞,攻击者即可展开进一步漏洞利用。
对抗模糊攻击的最佳方法就是保持更新安全设置和其他应用,尤其是在安全补丁发布后不更新就会遭遇恶意黑客利用漏洞的情况下。
4. 零日攻击
零日攻击是模糊攻击的扩展,但不要求识别漏洞本身。此类攻击最近的案例是谷歌发现的,他们在Windows和Chrome软件中发现了潜在的零日攻击。
在两种情况下,恶意黑客能够从零日攻击中获利。第一种情况是,如果能够获得关于即将到来的安全更新的信息,攻击者就可以在更新上线前分析出漏洞的位置。第二种情况是,网络罪犯获取补丁信息,然后攻击尚未更新系统的用户。这两种情况下,系统安全都会遭到破坏,至于后续影响程度,就取决于黑客的技术了。
保护自己和自身网站不受零日攻击影响最简便的方法,就是在新版本发布后及时更新你的软件。
5. 路径(目录)遍历
路径遍历攻击不像上述几种攻击方法那么常见,但仍然是任何Web应用的一大威胁。
路径遍历攻击针对Web root文件夹,访问目标文件夹外部的未授权文件或目录。攻击者试图将移动模式注入服务器目录,以便向上爬升。成功的路径遍历攻击能够获得网站访问权,染指配置文件、数据库和同一实体服务器上的其他网站和文件。
网站能否抵御路径遍历攻击取决于你的输入净化程度。这意味着保证用户输入安全,并且不能从你的服务器恢复出用户输入内容。最直观的建议就是打造你的代码库,这样用户的任何信息都不会传输到文件系统API。即使这条路走不通,也有其他技术解决方案可用。
6. 分布式拒绝服务(DDoS)
DDoS旨在用请求洪水压垮目标Web服务器,让其他访客无法访问网站。僵尸网络通常能够利用之前感染的计算机从全球各地协同发送大量请求。而且,DDoS攻击常与其他攻击方法搭配使用;攻击者利用DDoS攻击吸引安全系统火力,从而暗中利用漏洞入侵系统。
保护网站免遭DDoS攻击侵害一般要从几个方面着手。首先,需通过内容分发网络(CDN)、负载均衡器和可扩展资源缓解高峰流量。其次,需部署Web应用防火墙(WAF),防止DDoS攻击隐蔽注入攻击或跨站脚本等其他网络攻击方法。
7. 中间人攻击
中间人攻击常见于用户与服务器间传输数据不加密的网站。作为用户,只要看看网站的URL是不是以HTTPS开头就能发现这一潜在风险了,因为HTTPS中的“S”指的就是数据是加密的,缺了“S”就是未加密。
攻击者利用中间人类型的攻击收集信息,通常是敏感信息。数据在双方之间传输时可能遭到恶意黑客拦截,如果数据未加密,攻击者就能轻易读取个人信息、登录信息或其他敏感信息。
在网站上安装安全套接字层(SSL)就能缓解中间人攻击风险。SSL证书加密各方间传输的信息,攻击者即使拦截到了也无法轻易破解。现代托管提供商通常已经在托管服务包中配置了SSL证书。
8. 暴力破解攻击
暴力破解攻击是获取Web应用登录信息相当直接的一种方式。但同时也是非常容易缓解的攻击方式之一,尤其是从用户侧加以缓解最为方便。
暴力破解攻击中,攻击者试图猜解用户名和密码对,以便登录用户账户。当然,即使采用多台计算机,除非密码相当简单且明显,否则破解过程可能需耗费几年时间。
保护登录信息的最佳办法,是创建强密码,或者使用双因子身份验证(2FA)。作为网站拥有者,你可以要求用户同时设置强密码和2FA,以便缓解网络罪犯猜出密码的风险。
9. 使用未知代码或第三方代码
尽管不是对网站的直接攻击,使用由第三方创建的未经验证代码,也可能导致严重的安全漏洞。
代码或应用的原始创建者可能会在代码中隐藏恶意字符串,或者无意中留下后门。一旦将“受感染”的代码引入网站,那你就会面临恶意字符串执行或后门遭利用的风险。其后果可以从单纯的数据传输直到网站管理权限陷落。
想要避免围绕潜在数据泄露的风险,请让你的开发人员分析并审计代码的有效性。此外,确保所用插件(尤其是WordPress插件)及时更新,并定期接收安全补丁:研究显示,超过1.7万个WordPress插件(约占研究当时采样数量的47%)两年内没有更新。
10. 网络钓鱼
网络钓鱼是另一种没有直接针对网站的攻击方法,但我们不能将它排
除在名单之外,因为网络钓鱼也会破坏你系统的完整性。根据FBI《互联网犯罪报告》的说法,其原因在于网络钓鱼是最常见的社会工程网络犯罪。
网络钓鱼攻击用到的标准工具就是电子邮件。攻击者通常会伪装成其他人,诱骗受害者给出敏感信息或执行银行转账。此类攻击可以是古怪的419骗局(属于预付费欺诈类骗局),或者涉及假冒电子邮件地址、貌似真实的网站和极具说服力用语的高端攻击。后者以鱼叉式网络钓鱼之名广为人知。
当涉及到保护网站安全时,以下是一些额外的措施和建议:
加强身份认证和访问控制:使用强密码策略、多因素身份验证、限制用户的访问权限、定期检查和删除不必要的用户账户等。
加密通信:使用 SSL/TLS 协议来加密网站和用户之间的通信,以保护数据的机密性和完整性。确保网站的所有页面都通过 HTTPS 提供,并配置正确的证书和加密协议。
定期安全审计和漏洞扫描:进行定期的安全审计和漏洞扫描,以发现和修补潜在的安全漏洞。可以使用自动漏洞扫描工具或聘请专业安全团队进行全面的安全评估。
强化文件上传功能:验证和过滤用户上传的文件类型、大小和内容,防止恶意文件的上传和执行。将上传的文件存储在非可执行目录下,并对其进行适当的访问控制。
安全更新和补丁管理:及时更新操作系统、服务器软件和应用程序的安全补丁和更新,以保持最新的安全防护机制。
安全监控和警报系统:实施实时监控系统,监视网站的安全事件和异常活动。配置警报和通知机制,以及及时响应和处置任何安全违规问题。
监控和日志记录:实施有效的监控和日志记录系统,以便检测和应对潜在的安全事件。
备灾和业务连续性计划:制定和实施适当的备灾和业务连续性计划,以便在出现安全事件或灾难时能够快速恢复正常运营。
此外,利用反向代理、负载均衡等技术也可以作为一种防御手段,例如使用Web应用防火墙(WAF)、入侵检测系统(IDS)等来保护网站免受攻击。