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

207 阅读7分钟

这是本次青训营第十五节课《网站常见安全漏洞》,也是最后一节课的笔记与感想。

当今的世界呈现网络信息化、网络全球化的发展大趋势。因此,我们应该竭尽全能地享受其带来的优势和便利,让信息网络为人类的生活进行健康服务。同时,我们还应该采取一切措施将各类危害网络信息安全的病毒清扫干净。只有防患于未然,我们才能在错综复杂的网络信息时代中沐浴和谐的阳光。

一.服务端漏洞

第三方组件漏洞

防护方式:
针对java 可以选择使用dependency- check maven检查项 目以来的组件是否存在安全漏洞

SQL注入

当服务器端未能正确过滤用户输入时,攻击者可以通过在输入中注入恶意SQL代码来访问、修改或删除数据库中的数据。

防护方式:
1.尽量不要基于DB的Raw方法拼接构造SQL语句,而应该使用预编译、ORM框架
2.使用ORM框架时,应该注意框架中的特性,可能存在不安全的写法导致的SQL注入问题。
3.在复杂场景一定要使用拼接SQL,需要对外部输入进行转义。

命令执行

防护方式:
1.对动态的值尽可能设置白名单进行验证。
2.如果某些位置无法白名单,需要尝试对数据类型进行校验。
3.特殊字符黑名单的过滤,或者转义。

越权漏洞

(1)水平越权

黑灰产场景: 订单查询功能提供订单id即可查询订单详情,这里攻击者可以遍历orderld获取其他用户的订单信息

防护方式: 涉及资源id尽量不要使用短id (遍历难度较小),同时最重要的-定要最好资源属主校验

(2)垂直越权

黑灰产场景: 攻击者 可以通过开通另外的测试管理员账户抓包获取接口,或者通过逆向前端代码方式获取实际接口,然后绕过前端直接尝试访问后端接口,获取数据详情。

防护方式: 如果是简单的场景, 可以将接口在路由级别进行分组,对不同的API分组引入Middleware进行权限拦截,Middleware获取当前用户角色以确定是否可以访问此接口。

SSRF

SSRF又称服务端请求伪造攻击,指攻击者利用后端服务器为跳板,让后端服务向非预期网络地址(主要指内网地址)发出恶意请求,获取敏感信息或执行恶意操作。

防护方式: 对ur的host进行白名单过滤,获取对host解析的ip进行判定,是否是内网地址。

文件上传漏洞

防护方案:
1.限制文件类型:如果系统只需要图片类型,可以从服务端解析文件格式,限制只能传入特定的文件格式。
2.站库分离:应用部署的位置和上传的文件分离,一般可以使用TOS、OSS等进行文件存储。
3.防止图床:对图片访问链接进行限制,包括时间限制,访问身份限制等。

二.客户端漏洞

开放重定向

某些需要重定向到其他站点的功能,往往在参数中携带需要重定向的URL,但实际程序逻辑没有控制好重定向的范围,导致攻击者可以构造恶意链接,诱导用户重定向到恶意站点。

危害: 钓鱼攻击。

修复方案: 对重定向严格进行白名单控制并正确校验匹配白名单。

XSS

防护方法:

  1. 输入过滤:对输入的特殊字符进行拦截,禁止前端提交特殊字符
  2. 输出过滤:
    a. 当字符输出到Dom时候,对危险字符进行html encode, 避免XSS。
    b.使用vue/react等 框架时候,避免使用危险指令,而应该使用安全指令。
  3. 富文本场景:比如文章发布场景,本身是需要提供富文本功能,这时候需要严格限制tag和attribute,可以在代码层面做白名单或者黑名单。
  4. CSP:用于缓解XSS,理念是对当前站点允许加载什么源的资源、发送什么请求能进行限制。

CSRF

防护方式: 防护的核心是判断请求的来源

  1. CSRF tokens:首次访问时候给客户端传递-个token,客户端每次访问时候都必须带上此token才能访问。
  2. SameSite cookies: Strick -> Lax(Default) -> None.核心是禁止某些场景发送第三方cookie。
  3. Referer . based validation:校验Referer来源是否是合法站点。

点击劫持

防护方式: 防护的核心是不让非预期的网站iframe

  1. X-Frame-Options: DENY 1 SAMEORIGIN

  2. CSP: frame -ancestors指令,用于设置允许frame的source列表。

CORS跨域配置错误

CORS:全称是“跨域资源共享”(Cross-originresource sharing),用以解决网页应用跨域访问的需求。

防护方式: 核心是正确设置跨域白名单
1.代码层:Middleware统一处理
2.网关层:Nginx反代统一拦截处理

WebSocket

CSWSH防护手段:
1.Cookie鉴权:限制请求的Origin
2.ticket/token鉴权:http服务提供接口,用于获取临时的身份凭证,并传递到WebSocket的初始化流程中

三.注意事项

  1. 网站运营者:
  • 输入验证和过滤:确保对用户输入的数据进行严格的验证和过滤,防止恶意数据的注入。这包括对表单输入、URL参数、Cookie等进行验证,并使用合适的过滤机制来阻止XSS和SQL注入等攻击。
  • 安全的密码策略:鼓励用户使用强密码,并限制密码的长度和复杂度要求。同时,应采用适当的加密方法来存储密码,并及时更新密码哈希算法以应对新的漏洞。
  • 定期更新和维护:及时处理和安装软件厂商发布的补丁和更新程序,这可以修复已知漏洞并提升系统的安全性。此外,还应及时删除不再使用或有安全隐患的旧版本软件。
  • 文件上传的安全措施:严格验证和限制用户上传的文件类型和大小,并在服务器上使用沙盒环境或安全机制来执行任何上传文件的操作。此外,还应检测上传的文件是否包含可能的恶意代码。
  • 加密和安全传输:通过使用SSL/TLS协议来加密敏感信息的传输,尤其是在用户登录、支付结算和其他涉及敏感数据的情况下。确保网站的证书有效,并优先使用HTTPS而非HTTP协议。
  • 强化身份验证:采用多因素身份验证(如使用验证码、指纹识别)来增加网站登录等敏感操作的安全性,并防止未经授权的访问。
  1. 组织/个人:
  • 任何个人和组织不得窃取或者以其他非法方式获取个人信息,不得非法出售或者非法向他人提供个人信息。
  • 提高安全意识,以减少其风险。

四.尾声

维护网络安全,人人有责。我们在使用互联网的时候,不仅要守法,还要护法,要向周围的人群宣传网络安全法。和平年代网络信息安全关乎国家与人民的利益,如何为网络筑起一道“安全门”。需要人民群众上下一心主动投身到网络安全事业中去,全心全意为国家网络安全拉起一道“防火墙”。