【前端安全】-【防范xss攻击】

这篇具有很好参考价值的文章主要介绍了【前端安全】-【防范xss攻击】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

XSS 漏洞的发生和修复

XSS 攻击是页面被注入了恶意的代码

案例

公司需要一个搜索页面,根据 URL 参数决定关键词的内容。小明写的前端页面代码如下:

<input type="text" value="<%= getParameter("keyword") %>">
<button>搜索</button>
<div>
  您搜索的关键词是:<%= getParameter("keyword") %>
</div>

如果这个url是:http://xxx/search?keyword="><script>alert('XSS');</script>,会导致页面弹出两次弹窗,因为当浏览器请求http://xxx/search?keyword="><script>alert('XSS');</script>时,服务端会解析出请求参数keyword,得到"><script>alert('XSS');</script>,拼接到HTML中返回给浏览器。形成了如下的 HTML:

<input type="text" value=""><script>alert('XSS');</script>">
<button>搜索</button>
<div>
  您搜索的关键词是:"><script>alert('XSS');</script>
</div>

浏览器无法分辨出<script>alert('XSS');</script>是恶意代码,因而将其执行。这里不仅仅div的内容被注入了,而且input的value属性也被注入,alert会弹出两次。

解决方案:对特殊字符进行转义:

<input type="text" value="<%= escapeHTML(getParameter("keyword")) %>">
<button>搜索</button>
<div>
  您搜索的关键词是:<%= escapeHTML(getParameter("keyword")) %>
</div>

上述url(http://xxx/search?keyword="><script>alert('XSS');</script>)展示的内容如下:

<input type="text" value="&quot;&gt;&lt;script&gt;alert(&#x27;XSS&#x27;);&lt;&#x2F;script&gt;">
<button>搜索</button>
<div>
  您搜索的关键词是:&quot;&gt;&lt;script&gt;alert(&#x27;XSS&#x27;);&lt;&#x2F;script&gt;
</div>

总结:

  1. 通常页面中包含的用户输入内容都在固定的容器或者属性内,以文本的形式展示。
  2. 攻击者利用这些页面的用户输入片段,拼接特殊格式的字符串,突破原有位置的限制,形成了代码片段。
  3. 攻击者通过在目标网站上注入脚本,使之在用户的浏览器上运行,从而引发潜在风险。
  4. 通过 HTML 转义,可以防止 XSS 攻击

注意特殊的 HTML 属性、JavaScript API

如果要根据URL参数决定跳转路径,前端代码:<a href="<%= escapeHTML(getParameter("redirect_to")) %>">跳转...</a>,假如URL 为http://xxx/?redirect_to=javascript:alert('XSS'),服务端响应就成了:<a href="javascript:alert(&#x27;XSS&#x27;)">跳转...</a>,虽然代码不会立即执行,但一旦用户点击a标签时,浏览器会就会弹出“XSS”。

解决方案:先把getParameter("redirect_to")的值转换成小写,再比对,下文省略了转换成小写的代码

// 禁止 URL 以 "javascript:" 开头
xss = getParameter("redirect_to").startsWith('javascript:');
if (!xss) {
  <a href="<%= escapeHTML(getParameter("redirect_to"))%>">
    跳转...
  </a>
} else {
  <a href="/404">
    跳转...
  </a>
}

如果链接是http://xxx/?redirect_to=%20javascript:alert('XSS')%20javascript:alert('XSS')经过URL解析后变成javascript:alert('XSS'),这个字符串以空格开头。这样攻击者可以绕过后端的关键词规则,又成功的完成了注入。最终,小明选择了白名单的方法,彻底解决了这个漏洞:

// 根据项目情况进行过滤,禁止掉 "javascript:" 链接、非法 scheme 等
allowSchemes = ["http", "https"];

valid = isValid(getParameter("redirect_to"), allowSchemes);

if (valid) {
  <a href="<%= escapeHTML(getParameter("redirect_to"))%>">
    跳转...
  </a>
} else {
  <a href="/404">
    跳转...
  </a>
}

总结:文章来源地址https://www.toymoban.com/news/detail-490163.html

  1. 做了 HTML 转义,并不等于高枕无忧。
  2. 对于链接跳转,如<a href="xxx"location.href="xxx",要检验其内容,禁止以javascript:开头的链接,和其他非法的scheme。

根据上下文采用不同的转义规则

到了这里,关于【前端安全】-【防范xss攻击】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web安全学习日志---xss漏洞(跨站脚本攻击)

      仅执行一次,非持久型。主要存在于攻击者将恶意脚本附加到url的参数中,发送给受害者,服务端未经严格过滤处理而输出在用户浏览器中,导致浏览器执行代码数据。 利用场景: 直接插入JS代码,修改url参数    攻 scriptalert(\\\'hack\\\')/script 防 $name=str_replace(\\\'script\\\', \\\'  \\\',$name

    2024年02月13日
    浏览(114)
  • 防范 XSS 攻击的措施

    XSS(Cross-site scripting)攻击是一种常见的网络安全漏洞,它可以通过注入恶意代码来攻击用户的计算机和浏览器,从而窃取用户的敏感信息或执行恶意操作。本篇文章将介绍防范 XSS 攻击的措施,并提供一些代码示例。 XSS 攻击是一种跨站点脚本攻击,攻击者通过在 Web 页面中

    2024年02月16日
    浏览(42)
  • CSRF 攻击和 XSS 攻击分别代表什么?如何防范?

    一:PHP         1. CSRF 攻击和 XSS 攻击分别代表什么?                 1.CSRF攻击                 1.概念:                 CSRF(Cross-site request forgery)跨站请求伪造,用户通过跨站请求,以合法身份做非法的事情                 2.原理:            

    2024年02月13日
    浏览(51)
  • 前端安全系列(一):如何防止XSS攻击?

    随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点。在移动互联网时代,前端人员除了传统的 XSS、CSRF 等安全问题之外,又时常遭遇网络劫持、非法调用 Hybrid API 等新型安全问题。当然,浏览器自身也在不断在

    2024年02月02日
    浏览(71)
  • 在前端开发中需要考虑的常见web安全问题和攻击原理以及防范措施

    随着互联网的发展,Web应用程序越来越普及,但是Web安全问题也随之增加。前端开发者作为Web应用程序的构建者之一,需要了解和掌握Web安全的基本知识和解决方案。本文将介绍前端开发者必须知道的Web安全问题和防范措施。 一、XSS攻击 XSS攻击指的是跨站脚本攻击,是一种

    2024年01月20日
    浏览(46)
  • .NET中使用HtmlSanitizer来有效的防范XSS攻击!

    随着互联网的发展,网络安全问题越来越受到关注。XSS攻击作为最常见的网络安全漏洞之一,对企业和用户的信息安全构成严重威胁。.NET开发人员可以使用HtmlSanitizer来有效防范XSS攻击,确保网站的安全性。 HtmlSanitizer是一个.NET开源库,用于从可能导致 XSS 攻击的构造中清除

    2024年02月09日
    浏览(87)
  • 保护网站安全:学习蓝莲花的安装和使用,复现跨站脚本攻击漏洞及XSS接收平台

     这篇文章旨在用于网络安全学习,请勿进行任何非法行为,否则后果自负。  环境准备 攻击介绍 原理 攻击者通过向目标网站提交包含恶意脚本的请求,然后将该恶意脚本注入到响应页面中,使其他用户在查看包含注入恶意脚本的页面时运行该恶意脚本。 图片来源 使用方法

    2024年02月10日
    浏览(50)
  • [Asp.Net Core] 网站中的XSS跨站脚本攻击和防范

    漏洞说明: 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Web脚本代码(html、javascript、css等),当用户浏览该页面时,嵌入其中的Web脚本代码会被执行,从而达到恶意攻击

    2023年04月14日
    浏览(50)
  • XSS 攻击是什么?怎么验证是否有XSS攻击漏洞?

    XSS(跨站脚本,Cross-Site Scripting)攻击是一种网络攻击,攻击者利用网站漏洞将恶意脚本注入用户的浏览器,从而在用户浏览网页时执行恶意代码。这种攻击可能造成用户敏感信息泄露、钓鱼、欺诈等安全问题。 验证是否有 XSS 攻击漏洞的方法: 手动测试:通过对输入框、

    2024年02月11日
    浏览(56)
  • XSS 存储漏洞修复

    收到检查报告,说是有xss 存储型漏洞,百度看了很多资料总结两句话 1、保存数据库内容需要过滤 2、设置过滤器 思路:我们需要一个过滤前在Controller方法调用前对所有参数进行检查,过滤替换。 过滤》替换非法参数》继续Controller调用。 网上得思路基本是替换,没看到拒绝

    2024年02月06日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包