前端代码常见的安全缺陷(一)

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

目录

1、使用不安全的target blank

问题描述:

修复建议:

2、Javascript 代码劫持

问题描述:

修复建议:

示例:

3、跨站请求伪造

问题描述:

修复建议:

4、遗留的调试代码

问题描述:

修复建议:

5、HTML页面中包含硬编码域名

问题描述:

修复建议:

6、密码管理:null 密码

问题描述:

修复建议

7、易受攻击的框架

问题描述:

修复建议:

8、请求头部未设置httpOnly属性

问题描述:

修复建议:


1、使用不安全的target blank

问题描述:

在使用<a>标签中使用target属性,当值设置为“_blank”攻击者会针对`window.opener`API进行恶意行为的攻击,有可能导致钓鱼安全漏洞问题。

例如,以下示例使用的`target`属性,但是没有设置`rel`属性。

    <a href="www.xxxxx.com" target="_blank" >test</a>

修复建议:

建议使用`target="_blank"`时,配合使用`rel="noopener noreferrer"`

例如,配置rel属性如下所示:

<a href="www.xxxxx.com" target="_blank" rel="noopener noreferrer">test</a>

2、Javascript 代码劫持

问题描述:

使用JavaScript传送敏感数据的应用程序可能会存在JavaScript劫持的漏洞,该漏洞允许未经授权的攻击者从一个易受攻击的应用程序中读取机密数据。

JavaScript劫持可以简单的理解为模拟授权的用户,窃取用户在服务器上的信息。Web浏览器使用同源策略(Same Origin Policy),以保护用户免受恶意网站的攻击。同源策略规定:如果要使用JavaScript来访问某个网页的内容的话,则JavaScript和网页必须都来源于相同的域。若不采取同源策略,恶意网站便可以使用受害者的客户端凭证来运行 JavaScript,从其他网站加载的敏感信息,并对这些信息进行处理,然后将其返回给攻击者。

使用JSON传输数据的JavaScript应用更容易受到JavaScript劫持攻击。由于JSON使用JavaScript语法的子集表示对象、数组、简单值,JSON本身可以被当做JavaScript执行,且使用eval()函数对JSON数据结构求值早被认为是存在风险的,其可能执行恶意代码。

修复建议:

尽量避免跨域的数据传输,对于同域的数据传输使用xmlhttp的方式作为数据获取的方式。如果是跨域的数据传输,必须要对敏感的数据获取做权限认证,具体的方式可以包括:

  1. referer的来源限制,利用前端referer的不可伪造性来保障请求数据的应用来源于可信的地方,此种方式力度较稀,完全依赖于referer,某些情况下(如存在XSS)可能导致被绕过。
  2. 加入Token。利用Token对调用者的身份进行认证,这种方式对于调用者的身份会要求力度较细,但是一旦出现XSS也可能导致前端Token的泄露,从而导致保护失效。
  3. 避免直接执行JavaScript响应:在响应中加入一些额外的字符。这些响应只有经过了修改,才能成功地转到JavaScript解释器进行处理。这样可以防止攻击者使用<script>标签来进行劫持。比如,可以给响应加上注释符号,使其无法直接执行;或者是在真实的响应前面,添加死循环语句,使其无法正常的直接运行。

示例:

function postXHR () {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', './test.config', true)
        xhr.onreadystatechange = function () {
            if(xhr.readyState == 4) {
                if(xhr.status == 200 || xhr.status == 0) {
                    console.log(xhr.responseText)
                }
            }
        }
        try {
            xhr.send(null)
        } catch (error) {
            console.log('error', error)
        }
      }

以上代码示例,在代码扫描中,一直提示第三行关键词`open`有问题,然后根据建议,在请求头部添加token,或者Referer,或者在回调的时候,对返回值做xss过滤了,还是提示报错。

在这里可以换一种方式来实现,例如通过fetch API,或者支持异步请求的框架Axios等。

3、跨站请求伪造

问题描述:

跨站请求伪造(CSRF)是伪造客户端请求的一种攻击。应用程序允许用户提交不包含任何nonce(与用户Session关联的加密随机值)的请求,将可能导致CSRF攻击。
例如:以下代码片段用于银行转账功能,对于该重要敏感的操作没有进行相应防护,将易于导致跨站请求伪造攻击。

var req = new XMLHttpRequest();  
req.open("POST", "/transferFunds", true);  
body = "to_account=Bill&amount=10000";  
req.send(body);  

例2:下面是通过表单发送请求。

<form method="GET" action="/transferFunds ">
    cash: <input type="text" name="cash">   
    to: <input type=" text " name=“to">   
    <input type="submit" name="action" value="TransferFunds">   
</form>

修复建议:

防止跨站请求伪造攻击的方法如下:

  1. 二次验证,进行重要敏感操作时,要求用户进行二次验证。
  2. 验证码,进行重要敏感操作时,加入验证码。
  3. 在重要敏感操作的表单中加入隐藏的Token。

例如:下面代码片段中,在表单中增加了一个Token。

req.open("POST", "/transferFunds", true);  
body = "to_account=Bill&amount=10000&token=" + token;  
//token为与会话相关的一次性随机数。  
req.send(body);  

这样,服务器端程序响应用户请求前先验证Token,判断请求的合法性。对于Token,越难被猜出攻击者攻击成功的概率就越低。

4、遗留的调试代码

问题描述:

应用程序中的测试代码会建立一些意想不到的入口,这些入口可能会被攻击者作为“后门”进行利。有的测试代码本身并不会带来危害,但它表明了程序未进行严格的清理,攻击者很可能会查找到另外一些可利用的测试代码。
例如

console.log(123456789)

修复建议:

应用程序在发布之前应删除测试代码。

5、HTML页面中包含硬编码域名

问题描述:

HTML中引用其他网站的资源是非常危险的,如果攻击者入侵该网站域名,便可以篡改引用资源的内容。
例如

<script src="https://apps.bdimg.com/libs/jquery/1.8.3/jquery.min.js"></script>

前端代码常见的安全缺陷(一),web前端技术,网络安全,安全,前端,开发语言 

此段代码依赖网站https://apps.bdimg.com,如果攻击者入侵了此网站,则可以篡改jquery.min.js的内容,具有风险。

修复建议:

需要控制HTML文件所引用的js资源,尽量使用本地的资源,不要包含其他网站的js或其他资源。

6、密码管理:null 密码

问题描述:

null 密码会消弱系统的安全性。

例如:

var password = null;
var passwordCapability = null

修复建议

程序中不应采用null密码,程序所需密码应从配置文件中获取加密的密码值。

7、易受攻击的框架

问题描述:

在项目中可能引入的框架版本比较低,例如,使用jquery 1.8.3 的版本,以及使用它的功能,如下所示:

      $.ajax({
        url: "./test.config",   
        type: "GET", 
        async: true,
        success:  (json, status, error) => {
            console.log('jquery ajax', json);
        },
        error: function (xhr, status, error) {
            console.error(error);
        },
        });

修复建议:

根据最新jquery发现的漏洞,如果项目中有使用jquery的低版本,建议进行升级,最新发现的漏洞,在3.5.0 才得到修复,建议版本 >= 3.5.0 

8、请求头部未设置httpOnly属性

问题描述:

目前主流的浏览器都支持cookie的httpOnly属性,该属性设置为true的时候表示cookie只能由web服务器访问,如果不设置该属性的话默认为false这样攻击者就可以很容易的访问到cookie信息,从而获取authentication标记或者一些会话信息。
例如:下面代码段创建cookie,但是没有设置httpOnly属性。

var  info = {domain: 'secure.com', path: '/userInfo',secure:true};  
response.cookie("cookieName",data,info)  

修复建议:

在发送cookie的时候应该设置httpOnly属性,
例如文章来源地址https://www.toymoban.com/news/detail-858139.html

var  info = {domain: 'secure.com', path: '/userInfo',secure:true,httpOnly:true};  
response.cookie("cookieName",data,info)  

到了这里,关于前端代码常见的安全缺陷(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 网络安全与攻防-常见网络安全攻防

    目录 攻击手段防御策略 阻断服务攻击(DoS) 地址解析欺骗(ARP攻击)(Address Resolution Protocol spoofing) 跨站脚本攻击(XSS) SQL注入 跨站请求伪造(csrf)  HTTPS中间人攻击 小结 阻断服务攻击(DoS) 阻断服务攻击(Denial-of service attack),想办法将目标网络资源用尽(自己的服

    2023年04月25日
    浏览(64)
  • 【网络安全】1.3 常见的网络安全威胁

    在我们的日常生活和工作中,网络安全是非常重要的一部分。无论你是在浏览网页,发送电子邮件,还是在线购物,你都可能遇到各种网络安全威胁。下面,我们将详细介绍一些最常见的网络安全威胁,以及如何防范这些威胁。 恶意软件是一种对计算机系统造成损害或窃取用

    2024年02月07日
    浏览(36)
  • 【网络安全】-安全常见术语介绍

    在学习信息安全领域时,了解一些常见的术语是非常重要的。这些术语涵盖了各种安全概念和技术,对保护个人和组织的数字资产至关重要。本章将介绍一些常见的安全术语,旨在帮助小白用户更好地理解和应对不同的安全挑战。 定义 防火墙是一种网络安全设备,用于监控

    2024年02月05日
    浏览(53)
  • 【网络安全】安全常见术语介绍

    介绍 在学习信息安全领域时,了解一些常见的术语是非常重要的。这些术语涵盖了各种安全概念和技术,对保护个人和组织的数字资产至关重要。本章将介绍一些常见的安全术语,旨在帮助小白用户更好地理解和应对不同的安全挑战。 1. 防火墙(Firewall) 定义 防火墙是一种

    2024年02月02日
    浏览(67)
  • 安全基础——常见网络安全产品

    安全产品: 端点安全:恶意软件防护、终端安全管理 网络安全:安全网关、入侵检测与防御、网络监控与审计 应用安全:web安全、数据库安全、邮件安全 数据安全:数据治理、文件管理与加密、数据备份与恢复 身份与访问管理:认证与权限管理、高级认证 安全管理:安全

    2024年02月08日
    浏览(43)
  • 【网络安全】常见的网络威胁有哪些?

    随着互联网的快速发展,网络安全问题日益凸显。常见的网络威胁包括病毒、木马、恶意软件等。这些威胁不仅会影响计算机的安全运行,还会窃取用户的个人信息,造成巨大的损失。因此,我们需要采取一些措施来保护自己的网络安全。 常见的网络威胁包括: 1、计算机病

    2024年01月23日
    浏览(41)
  • 网络安全中常见的网络协议解释

    多播DNS(mDNS)协议用于在不包含本地名称服务器的 小型网络 中将主机名解析为IP地址 传统的 DNS用于将域名转换为 IP 地址,而 mDNS 则是在局域网环境中使用的一种零配置协议。它使用特定的多播地址(例如 IPv4 的 224.0.0.251 和 IPv6 的 ff02::fb),使设备能够向网络发送广播消息

    2024年02月02日
    浏览(53)
  • ​一些常见网络安全术语​

    1、黑帽 为非法目的进行黑客攻击的人,通常是为了经济利益。他们进入安全网络以销毁,赎回,修改或窃取数据,或使网络无法用于授权用户。这个名字来源于这样一个事实:老式的黑白西部电影中的恶棍很容易被电影观众识别,因为他们穿着黑色的斯泰森,而“好人”则

    2024年02月11日
    浏览(54)
  • 网络安全攻击的常见类型

    网络安全攻击的常见类型包括以下几种: 木马程序(Trojan Horse):木马程序是一种假扮成正常程序的恶意软件,一旦被安装或执行,攻击者就能够远程控制被感染的系统,进行非法操作。 计算机病毒(Computer Virus):病毒是一种能够自我复制并传播的恶意软件,通过感染正常

    2024年02月09日
    浏览(51)
  • 网络空间安全及计算机领域常见英语单词及短语——网络安全(一)

    Cybersecurity 网络安全 Network security 网络安全 Information security 信息安全 Data protection 数据保护 Threat analysis 威胁分析 Risk assessment 风险评估 Intrusion detection system (IDS) 入侵检测系统 Intrusion prevention system (IPS) 入侵防御系统 Malware detection 恶意软件检测 Vulnerability assessment 漏洞评估 Ac

    2024年02月07日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包