网站常见安全漏洞 | 青训营笔记

111 阅读5分钟

1. 网络安全三要素

1.机密性:攻击者无法获知通知。

2.完整性:攻击者对内容进行篡改时能被发现。

3.身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信。

2. 网站攻击者意图及常见的安全事件

网站攻击者往往出于以下意图对网站进行攻击:

政治目的:出于政治目的实施黑客攻击,可能涉及窃取关键系统的机密数据、破坏关键系统正常运行。

经济目的:网站数据具有很高的经济价值,攻击者通过网站漏洞违法获取数据并进行售卖。

竞争目的:同类厂商之间可能由于竞争原因,对竞品网站进行一些攻击,以达到让对方站点无法运行的目的。

个人炫技、泄愤。用攻击对方网站方式彰显自己的技术实力,或者对某些仇恨的系统发起攻击。 攻击往往会造成以下安全事件:

1.数据泄露

2.服务瘫痪

3.成果失窃

4.系统劫持

3. 网站攻击形式及漏洞分类

3.1 网站攻击形式

依据前后端形式网站攻击可分为对客户端的漏洞攻击以及对服务端(后端)漏洞攻击。

漏洞分类可分为以下客户端漏洞和服务端漏洞两类:

4. 服务端漏洞

4.1 第三方组件漏洞

第三方组件漏洞是指在应用程序中使用的第三方软件或库中存在的安全漏洞。第三方组件可以是开源软件、商业软件或其他外部库。

第三方组件漏洞可能会导致以下安全风险和问题:

远程代码执行(Remote Code Execution,RCE):某些漏洞可能允许攻击者在受影响的服务器上执行恶意代码,从而控制服务器并执行任意操作。 身份验证绕过:某些漏洞可能允许攻击者绕过身份验证机制,以未经授权的方式访问应用程序或系统。

敏感信息泄露:某些漏洞可能会导致敏感信息(如个人身份信息等)泄露给攻击者。 拒绝服务攻击(DoS):某些漏洞可能会导致应用程序或系统崩溃,从而使其无法提供正常的服务。 减少第三方组件漏洞风险,通常可以采取以下措施:

及时更新和升级:及时更新和升级使用的第三方组件,获取最新的修复程序和安全补丁。 定期审查漏洞公告:定期关注第三方组件供应商的漏洞公告和安全通知,了解已经发现的漏洞和可用的修复程序。

使用可信任的第三方组件:在使用第三方组件时,要选择经过审查的组件。针对java可以选择使用dependency-check-maven检查项目以来的组件是否存在安全漏洞。 实施安全测试:对应用程序进行安全测试,包括对使用的第三方组件进行漏洞扫描和安全评估。

4.2 SQL注入

SQL语句静态模板和动态数据部分没有严格区分,如果在数据项中加入了某些SQL语句关键字(比如 SELECT、DROP等),这些SQL语句就可以在数据库写入或读取数据时得到执行。攻击者可以通过在登录表单中输入恶意的用户名和密码来绕过身份验证,以其他用户身份登录,或是注入恶意的SQL代码来窃取数据库中存储的敏感信息,修改、删除数据库中的数据,具有极大的风险。

减少SQL注入漏洞风险,通常可以采取以下措施:

尽量不要基于数据库的Raw方法拼接构造SQL语句,而应该使用预编译、ORM框架。 使用ORM框架时,应该注意框架特性,可能存在不安全的写法导致的SQL注入问题。 在复杂场景一定要使用拼接SOL,需要对外部输入进行转义。 最小权限原则。为数据库用户分配最小的权限,以限制攻击者对数据库的访问和操作。确保应用程序连接数据库的账号只具有执行必要操作的权限。 在应用程序中实现适当的错误处理和日志记录机制,以便及时发现和识别潜在的SQL注入攻击。 定期更新和升级使用的数据库管理系统和相关组件,以获取最新的安全补丁和修复程序。

5. CDN

CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度.