web:常见安全问题

简介: web:常见安全问题

一、XSS

XSS(Cross-Site Scripting),跨站脚本攻击,因为缩写和css重叠,所以只能叫XSS。跨站脚本攻击是指通过存在安全漏洞的web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。

跨站脚本攻击有可能造成一下影响:

1、利用虚假输入表单骗取用户个人信息。

2、利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求。

3、显示伪造的文章或图片。

XSS的原理是恶意攻击者往Web页面里插入恶意可执行网页脚本代码,当用户浏览该网页之时,嵌入其中Web里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。

XSS的攻击方式千变万化,大致可以分为几种类型:

1、非持久型XSS(反射型XSS)

非持久性XSS漏洞,一般是通过给别人发送恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行。

2、持久型XSS(存储型XSS)

持久型XSS漏洞,一般存在于Form表单提交等交互功能,如文章留言,提交文本信息等,黑客利用的XSS漏洞,将内容正常功能提交进入数据库持久保存,当前端页面获得后端从数据库中读出的注入代码时恰好将其渲染执行。

如何防御XSS

CSP:

CSP本质上就是建立白名单,开发者明确告诉浏览器哪些外部资源可以加载执行。我们只需要配置规则,如何拦截是由浏览器自己实现的。我们可以通过这种方式来尽量减少XSS攻击。

转义字符:

用户的输入永远不可信任,最普遍的做法就是转义输入输出的内容,对于引导、尖括号、斜杠进行转义。

HttpOnly Cookie:

这是预防xss攻击窃取用户cookie最有效的防御手段。web应用程序设置cookie时,将其属性设置为HttpOnly,就可以避免该网页的cookie被客户端恶意JavaScript窃取,保护用户cookie信息。

前后端对输入的内容进行校验,过滤。

二、CSRF:

CSRF(Cross Site Request Forgery),即跨站请求伪造,是一种常见的web攻击,它利用用户已登录的身份,在用户毫不知情的情况下,以用户的名义完成非法的操作。

CSRF攻击的原理:

如何防御:

防范csrf攻击可以遵循以下几种规则:

Get请求不对数据进行修改

不让第三方网站访问到用户Cookie

阻止第三方网站请求接口

请求时附带验证信息,比如验证码或Token

使用验证码,极验,就是在做一些重要操作时需要进行验证才能完成

具体方法:

SameSite

Referer Check

Anti CSRF Token

验证码

三、点击劫持

点击劫持是一种视觉欺骗的攻击手段。攻击者将需要攻击的网站通过iframe嵌套的方式嵌入自己的网页中,并将iframe设置为透明,在页面中透出一个按钮诱导用户点击。

3.1、点击劫持的特点

3.1.1、隐蔽性较高,骗取用户操作

3.1.2、UI覆盖攻击

3.1.3、利用iframe或者其他标签的属性

3.2、点击劫持的原理

用户在登录A网站的系统后,被攻击者诱惑打开网站,而第三方网站通过iframe引入了A网站的页面内容,用户在第三方网站中点击某个按钮(被装饰的按钮),实际上是点击了A网站的按钮。

3.3、如何防御

3.3.1、X-FRAME-OPTIONS

3.3.2、JavaScript防御

四、URL跳转漏洞

4.1、定义:借助未验证的url跳转,将应用程序引导到不安全的第三方区域,从而导致的安全问题。

4.2、URL跳转漏洞原理

黑客利用URL跳转漏洞来诱导安全意识低的用户点击,导致用户信息泄露或者资金的流失。其原理是黑客构建恶意链接(链接需要进行伪装,尽可能迷惑),发在QQ群或者是浏览量多的贴吧/论坛中。

安全意识低的用户点击后,经过服务区或者浏览器解析后,跳到恶意的网站中。

4.3、实现方式

Header跳转

JavaScript跳转

META标签跳转

4.4、如何防御

4.4.1、referer限制

如果确定传递url参数进入的来源,我们可以通过该方式实现安全限制,保证该URL的有效性,避免恶意用户自己生成跳转链接。

4.4.2、加入有效性验证Token

我们保证所有生成的链接都是来自于我们可信域的,通过在生成的链接里加入用户不可控的Token对生成的链接进行校验,可以避免用户生成自己的恶意链接从而被利用,但是如果功能本身要求比较开放,可能导致有一定的限制。

五、SQL注入

5.1、SQL注入是一种常见的Web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。

5.2、SQL注入的必备条件

5.2.1、可以控制输入的数据

5.2.2、服务器要执行的代码拼接了控制的数据。

5.3、危害

获取数据库数据信息

管理员后台用户名和密码

获取其他数据库敏感信息:用户名、密码、手机号码、身份证、银行卡信息

整个数据库:脱裤

获取服务区权限

植入Webshell获取服务区后门

读取服务区敏感文件

5.4、如何防御

严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害

后端代码检查输入的数据是否符合预期,严格限制变量的类型,例如使用正则表达式进行一些匹配处理。

对进入数据库的特殊字符(',",,<,>,&,*,; 等)进行转义处理,或编码转换。基本上所有的后端语言都有对字符串进行转义处理的方法,比如 lodash 的 lodash._escapehtmlchar 库。

所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中,即不要直接拼接 SQL 语句。例如 Node.js 中的 mysqljs 库的 query 方法中的 ? 占位参数。

六、OS命令注入攻击

6.1、OS命令注入和SQL注入差不多,只不过SQL注入是针对数据库的,而OS命令注入是针对操作系统的。OS命令注入攻击指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就有存在被攻击的风险。倘若调用Shell时存在疏漏,就可以执行插入的非法命令。

命令注入攻击可以向Shell发送命令,让Windows或Linux操作系统的命令行启动程序。也就是说,通过命令注入攻击可执行操作系统上安装着的各种程序。

6.2、如何防御

后端对前端提交内容进行规则限制(比如正则表达式)

在调用系统命令前对所有传入参数进行命令参数转义过过滤

不要直接拼接命令语句,借助一些工具做拼接、转义预处理,例如,node.js的shell-escape npm包

七、不受限制的文件上传

这是一种将恶意文件上传到服务器然后对系统执行的攻击方式。攻击可能包括:使文件系统或数据库超载,接管完整的系统,客户端攻击,将攻击转发到后端系统或进行简单的破坏。

八、欢迎交流指正

相关文章
|
4天前
|
缓存 安全 搜索推荐
阿里云先知安全沙龙(北京站) ——浅谈Web快速打点
信息收集是网络安全中的重要环节,常用工具如Hunter、Fofa和扫描工具可帮助全面了解目标系统的网络结构与潜在漏洞。遇到默认Nginx或Tomcat 404页面时,可通过扫路径、域名模糊测试、搜索引擎缓存等手段获取更多信息。AllIN工具(GitHub: P1-Team/AllIN)能高效扫描网站路径,发现敏感信息。漏洞利用则需充分准备,以应对突发情况,确保快速拿下目标站点。 简介:信息收集与漏洞利用是网络安全的两大关键步骤。通过多种工具和技术手段,安全人员可以全面了解目标系统,发现潜在漏洞,并制定有效的防御和攻击策略。
|
12天前
|
安全 应用服务中间件 网络安全
实战经验分享:利用免费SSL证书构建安全可靠的Web应用
本文分享了利用免费SSL证书构建安全Web应用的实战经验,涵盖选择合适的证书颁发机构、申请与获取证书、配置Web服务器、优化安全性及实际案例。帮助开发者提升应用安全性,增强用户信任。
|
1月前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
72 1
|
1月前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
102 4
|
1月前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
87 2
|
1月前
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
104 3
|
1月前
|
SQL 安全 Go
PHP在Web开发中的安全实践与防范措施###
【10月更文挑战第22天】 本文深入探讨了PHP在Web开发中面临的主要安全挑战,包括SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等,并详细阐述了针对这些风险的有效防范策略。通过具体案例分析,揭示了安全编码的重要性,以及如何结合PHP特性与最佳实践来加固Web应用的安全性。全文旨在为开发者提供实用的安全指南,帮助构建更加安全可靠的PHP Web应用。 ###
47 1
|
2月前
|
Kubernetes 安全 应用服务中间件
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
59 3
|
2月前
|
缓存 安全 JavaScript
掌握JAMstack:构建更快、更安全的Web应用
JAMstack 是一种现代 Web 开发架构,结合 JavaScript、APIs 和 Markup,创建更快、更安全的 Web 应用。其核心优势包括高性能、安全性、可扩展性和易维护性。JAMstack 通过预构建静态页面和 API 实现高效渲染,利用静态站点生成器如 Gatsby 和 Next.js,并借助 CDN 和缓存策略提升全球访问速度。尽管面临复杂交互、SEO 和数据更新等挑战,但通过 Serverless Functions、预渲染和实时 API 更新等方案,这些挑战正逐步得到解决。
|
3月前
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
143 5