让我们来看看什么是路径遍历攻击,以及在Node.js中可以采用哪些方法来阻止这种攻击。   构建一个安全而健壮的应用程序需要考虑的因素很多,并非一件容易的事情。要确保覆盖所有潜在的漏洞是一项十分艰巨的任务,这需要大量的经验和指导。在这些漏洞中,有一个和系统目录访问安全相关的漏洞,它通常会在程序进行路径遍历时受到攻击。   理解这一点有助于你找到解决问题的办法。网络上有大量相关的资源可以帮助你解决该问题,本文只是诸多资源中的一个。   本文旨在介绍路径遍历攻击的原理,以及使用Node.js可以采取哪些方法来阻止这类攻击。首先,我们将简要介绍什么是路径遍历攻击,然后将探讨一些常见的示例,最后介...

  QEFqpbNRhIpg   3天前   8   0   0 翻译区

  在本文中,我们将学习如何在NodeJS中使用命令行函数进行注入漏洞攻击。   现代网站可以是一个复杂的软件,它由许多分布在不同环境中的部分组成。如果你的应用程序没有得到有效的保护,那么分布在这些环境中的每一个组成部分都有可能受到命令行注入漏洞的攻击。   本文将介绍如何在NodeJS中使用shell命令行函数时进行注入漏洞攻击。同时我们还将探讨一些有关如何防范这些攻击的技术。   下面让我们开始吧! 什么是命令行注入漏洞?   简单来讲,当你的应用程序接受不安全的用户输入并将输入的内容作为执行操作系统命令的参数时,就有可能产生这样的漏洞。命令行注入攻击的目的是通过合法的命令,以便攻击者在目...

  QEFqpbNRhIpg   14天前   21   0   0 翻译区

  攻击者可以使用Node.js应用侵入你的系统。本文介绍如何阻止这种行为的发生。   当Node.js首次发布时,它引起了一场革命。它允许开发人员在服务器端运行JavaScript,这是浏览器的主要编程语言。随着时间的推移,Node.js变得越来越流行,并成为构建Web应用程序和API的首选工具。   Node.js由一个小而稳定的运行时核心和一组内置模块组成,这些内置模块提供了一些基本功能,如文件系统访问、TCP/IP网络、HTTP协议、加密算法、解析命令行参数等。这些内置模块功能强大,经过了充分的测试并且性能良好。   不过,它并不能涵盖Web应用程序开发人员的都有需求。有时,我们需要使...

  QEFqpbNRhIpg   2023年12月01日   12   0   0 翻译区

使用不可信的数据,通过调用不安全的递归函数来暴露默认原型 原型污染:基础 什么是原型污染?   原型污染是一种针对JavaScript运行时的注入攻击。通过原型污染,攻击者可以控制对象属性的默认值,从而篡改应用程序的逻辑并可能导致服务被拒绝,甚至在某些极端情况下远程执行代码。   现在,你是不是满脑子充满了各种疑问。到底什么是“在运行时改写对象的属性”?它如何影响应用程序的安全?而且,更重要的是,我如何保护我的代码免受这种攻击? 关于本文   原型污染可以很复杂,所以本文将分三部分进行介绍。 使用原型污染危害易受攻击的API。 了解更多有关JavaScript原型的知识以及原型污染是如何工作...

  QEFqpbNRhIpg   2023年11月12日   16   0   0 JavaScript

  正常情况下,我们按照下面的步骤操作即可进入Android的开发者模式(大部分安卓手机进入的方式都类似): 打开手机的设置,点击最下面的关于手机。  点击这里的“HarmonyOS版本”。连续点击多次(我的手机是7次),然后会弹出需要输入密码解屏。解锁之后屏幕上会提示“您正处于开发者模式!”。  返回到上级菜单,选择“系统和更新”。你会看到此处多了一个“开发人员选项”的菜单。点击进入即可进行相关的设置。   不过有的时候不管点多少次“HarmonyOS版本”也不起作用,这个时候你需要检查一下手机的菜单“健康使用手机”是否被开启了。如果被开启了,则点进去关掉该选项,然后...

  QEFqpbNRhIpg   2023年11月05日   39   0   0 Android开发

如何使用spawn(),exec(),execFile()和fork()   对于单进程而言,Node.js的单线程和非阻塞特性表现地非常好。然而,对于处理功能越来越复杂的应用程序而言,一个单进程的CPU是远远无法满足需要的。   无论你的服务器有多强大,单线程都是远远不够用的。   事实上,Node.js的单线程特性并不意味着我们不能将其运行在多线程或者多服务器的环境中。   使用多进程是扩展Node.js应用程序的最佳实践,Node.js就是为构建具有多个节点的分布式应用程序而设计的,这也是它为什么被命名为Node的原因。可伸缩性已经融入到平台中,而不应该在应用程序开发的后期才开始考...

  QEFqpbNRhIpg   2023年11月02日   24   0   0 翻译区

什么是单元测试?   所谓单元测试,是对软件中单个功能组件进行测试的一种软件测试方式,其目的是确保代码中的每一个基本单元都能正常运行。因此,开发人员在应用程序开发的整个过程(即代码编写过程)中都需要进行单元测试。在进入到软件开发的下一阶段之前,对程序进行单元测试是一个不错的主意。单元测试非常有用,它使用简单并且运行迅速。   单元测试是测试驱动开发(TDD)的重要组成部分,在我们进行实际功能开发之前,它是用来描述功能的预期行为以及我们想要它实现(或不实现)哪些功能的一种实践方式。采用TDD的方式来进行软件开发有几个目的: 这种技术可以帮助我们识别一些边界情况,并确保在这些情况下我们的代码仍然...

  QEFqpbNRhIpg   2023年11月01日   30   0   0 软件测试

  对VSCodeextension进行单元测试时通常会遇到一个问题,代码中所使用的VSCode编辑器的功能都依赖于vscode库,但是我们在单元测试中并没有添加对vscode库的依赖,所以导致运行单元测试时出错。由于vscode库是作为第三方依赖被引入到我们的VSCodeextension中的,所以它并不受我们的控制,最好的办法就是在单元测试中对其中的API进行模拟。本文中我将介绍如何使用Jest来模拟vscode库的API。   如果你还不太熟悉如何开始创建一个VSCodeextension,这里的文档可以教你快速上手。   创建好VSCodeextension项目后,你会发现在根目录下有...

  QEFqpbNRhIpg   2023年11月01日   31   0   0 软件测试

  参考sapui5TreeTable控件的示例,我们发现所有的可展开列(即所谓的hierarchicaldatacolumn)默认都在第一列,而且API中并没有给出对应的属性或方法来重新指定可展开列在table中的位置。   我们可以编写一个自定义控件,使其继承sapui5的TreeTable控件,并修改其中的renderTableCellControl方法,从而实现该功能。下面给出了该自定义控件的代码: 1varcolIndex=0; 2vartreeTableRenderer=sap.ui.core.Renderer.extend(sap.ui.table.TableRenderer)...

  QEFqpbNRhIpg   2023年11月01日   25   0   0 JavaScript

  今天早上打开电脑,更新了日常工作的github仓库,然后就是习惯性地执行了"npminstall",发现报了下面这个错误: Error:error:0308010C:digitalenveloperoutines::unsupported   顺便看了一下错误堆栈,发现是一个Node的内核文件抛出来的错误,我的第一反应这个错误应该是和Node的版本有关(前几天刚刚升级过Node),所以理所当然地降低Node的版本应该可以解决这个问题。或者使用nvm(Windows平台上也可以使用nvm-windows)安装多个不同的Node版本。   除了切换Node的版本来解决这个问题外,其实还可以...

  QEFqpbNRhIpg   2023年11月01日   20   0   0 JavaScript

  上一篇我介绍了如何在VSCodeWebview中实现点击链接下载图片或文件,本文介绍如何在默认浏览器中打开一个新的页面。   在浏览器中,如果要实现打开一个新的页面有许多种不同的方法,例如: window.open("https://www.cnblogs.com/jaxu","_blank");   或者直接在页面上放一个<a>标签:<ahref="https://www.cnblogs.com/jaxu"target="_blank">点我</a>。当然这个标签也可以是动态生成的: leta=document.createElement('a'...

  QEFqpbNRhIpg   2023年11月01日   42   0   0 JavaScript

介绍   在本文中,我试图以最简洁的方式来阐明JavaScript编程原理中对象类型赋值和原生类型赋值之间的区别,以及它们各自是如何工作的。这也是我希望在我的JavaScript编程生涯早期就已经理解的东西。 JS中的原生类型和对象类型   首先,让我们回顾一下JavaScript中不同的原生类型和对象类型。  原生类型:Boolean,Null,Undefined,Number,BigInt(可能不常见),String,Symbol(可能不常见)。  对象类型:Object,Array,Date,以及许多其它类型。 原生类型赋值和对象类型赋值有什么不同? 原生类型赋值   将一个原生类型的值...

  QEFqpbNRhIpg   2023年11月01日   21   0   0 JavaScript

  众所周知,在一个普通的HTML页面中,如果要实现一个链接点击后下载图片,只需要在页面上放一个<a>标签,然后将属性href的值指向图片的URL或者Base64字符串就可以了。或者按照stackoverflow上提供的方法动态创建<a>标签来完成图片的下载动作。不过原理都是相同的。   但是这个方法在VSCode的Webview中不起作用,点击链接之后没有任何反应。如果图片的地址是一个可以独立访问的绝对地址,例如任何一个互联网上可以访问到的图片地址,则点击链接之后VSCode会将图片在浏览器中打开。我猜想图片下载的功能在VSCode的Webview中可能被限制了。如果...

  QEFqpbNRhIpg   2023年11月01日   57   0   0 Html/Css

一、什么是微服务   微服务是一种技术架构,通常我们可以把它理解为一组可以相互之间协同工作的应用程序或服务,这些应用程序或服务能够被单独部署到不同的服务器中,并且能够自主运行和维护。   微服务技术只是一个名称而已,或许我们在日常工作中已经或多或少在使用其中的一种或几种技术和架构,但我们并没有将其称之为微服务。而且,对于微服务的大小和规模,也并没有严格的限制,也许几百行代码或者数个文件,也或者比这个规模更大一点,都没有关系。我们不应该在这一点上过多地纠结,而应该更多地去关心微服务到底解决了什么问题?这才是最主要的。 二、为什么需要微服务   换句话说,微服务架构到底解决了什么问题?要回答这个问...

  QEFqpbNRhIpg   2023年11月01日   34   0   0 架构设计

上一篇:微服务架构基本原理学习笔记(一) 三、微服务架构   从一个已有的单体架构的应用程序开始进行微服务架构的重构往往是一个不错的选择。随着业务量和功能的增加,我们可以考虑使用微服务架构来扩充应用程序中原有的功能,或者每次添加新功能时,都为其创建一个新的微服务。这比从一开始就选择使用微服务架构进行设计要相对容易一些,因为微服务架构的好处通常不会体现在小型项目中。所以,考虑让项目持续迭代一段时间,直到我们能够非常清晰地确定服务的边界,通过微服务架构来进行功能的划分。   因此,对于每一个微服务,我们都需要明确它们各自的职责,并定义公共接口。 每个微服务管理各自的数据   前面我们已经介绍过,微...

  QEFqpbNRhIpg   2023年11月01日   38   0   0 架构设计

上一篇:微服务架构基本原理学习笔记(二) 五、微服务之间的通信 微服务通信模式   微服务本身并没有规定通信规则,换句话说,一个微服务并没有规定可以被哪些应用程序访问,或者被哪些其它的微服务调用。应用程序与微服务间的直接通信,或者微服务与微服务间的直接调用,往往会因为其中错综复杂的关系而导致级联故障,任何一个环节的错误都会导致与其关联的其它部分无法正常工作。而且,如果执行某个操作需要调用多个不同的微服务才能完成,也会导致整个系统性能下降。我们应该尽量较少微服务之间的通信。   下图展示了一个较好的微服务之间的通信架构图:   微服务之间可以将数据以消息的方式发布到事件总线上,这样其它的微服务...

  QEFqpbNRhIpg   2023年11月01日   36   0   0 架构设计
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~