Web安全-JavaScript基础

Posted IT鹅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web安全-JavaScript基础相关的知识,希望对你有一定的参考价值。

文章目录

javascript语言简述:

JavaScript(通常缩写为JS)是一种进阶的、直译的程式语言(动态执行语言与Python,Java等语言类似),JavaScript是一门基于原型、头等函数的语言,是一门多范式的语言,它支援物件导向程式设计,指令式编程,以及函式语言程式设计,它提供语法来操控文字、阵列、日期以及正则表达式等,不支援I/O,比如网络、储存和图形等,但这些都可以由它的宿主环境提供支援。它已经由ECMA(欧洲电脑制造商协会)通过ECMAScript实作语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器( Chrome、 IE、 Firefox、 Safari、Opera)支持。

为Web2.0而生:

–1993年,国家超级电脑应用中心(NCSA)发表了NCSA
Mosica最早流行的图形介面网页浏览器,它在万维网的普及上发挥了重要作用。
–1995年,网景招募了布兰登·艾克,目标是把Scheme语言嵌入到Netscape Navigator浏览器当中。
最初命名为Mocha,1995年9月在Netscape Navigator 2.0的Beta版中改名为LiveScript,同年12月,Netscape Navigator 2.0 Beta 3中部署时被重新命名为JavaScript
[以上内容来自wiki百科]

JavaScript教程:

在浏览器中调用Javascript,打开Chorm浏览器中的更多工具-开发者模式(Windows操作系统中使用F12)-console中执行一条JavaScript语句。

console.log("Hello World!")

JavaScript语言会被嵌入HTML前端代码中,一般由以下五种常见的形式:
直接插入代码块

<script>console.log('Hello World!');</script>

加载外部 JS 文件

<script src="Hello.js"></script>

使用 HTML 标签中的事件属性

<a href="javascript:alert('Hello')"></a>

JavaScript数据类型:

var pi=new String;
var pi=new Number;
var pi=new Boolean;
var pi=new Array;
var pi=new Object;
var pi=3.14;
var pi='Hello JavaScript';

JavaScript编程逻辑:

if条件语句

if (condition)

   代码块;

else

   代码块;

switch 条件语句:

switch(n)

  case 1:
    代码块
    break;
  case 2:
    代码块
    break;
  default:
    代码块

for/for in 循环语句:

for (代码1;代码2;代码3)

  代码块

for (x in xs)

  代码块

while/do while 循环语句:

while (条件)

  代码块

do

  代码块

while (条件);

JavaScript打印数据:

函数:window.alert(“TEST”) document.write(“TEST”) console.log(“TEST”)
作用:弹出警告框 写入html文档 写入浏览器控制台

JavaScript框架:

更多JavaScript框架内容可以参考[JQuery,Angular,React,Vue菜鸟教程]
jQuery
jQuery 封装了常用的JS功能,通过选择器的机制来操纵DOM节点,完成复杂的前端效果展示。
jQuery 是一个JavaScript函数库。JQuery库包括了HTML元素选取,HTML 元素操作,CSS操作
HTML事件函数,JavaScript特效和动画,HTML DOM遍历和修改,AJAX,Utilities
Angular
AngularJS是一个JavaScript框架,AngularJS是以一个JavaScript文件形式发布的,可通过 script 标签添加到网页中,实现了前端的MVC架构,通过动态数据绑定来简化数据转递流程。

<script src="https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js"></script>

React
利用组件来构建前端UI的框架,React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于2013年5月开源。
React项目开源地址:React项目
Vue
Vue是一套构建用户界面的渐进式框架,Vue只关注视图层,采用自底向上增量开发的设计。
Vue的目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件。
JavaScript DOM和BOM
**DOM:**文档对象模型,JS通过操纵DOM可以动态获取、修改HTML中的元素、属性、CSS样式,这种修改有时会带来XSS攻击风险。
**BOM:**浏览器对象模型,类比于DOM,赋予JS对浏览器本身进行有限的操纵,获取Cookie、地理位置、系统硬件或浏览器插件信息等。

JavaScript混淆:

混淆前的代码:

console.log('Hello World!');

混淆后的代码:

console["\\x6c\\x6f\\x67"]('\\x48\\x65\\x6c\\x6c\\x6f \\x57\\x6f\\x72\\x6c\\x64\\x21');

加密后的代码:

eval(function(p,a,c,k,e,d)e=function(c)return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36));if(!''.replace(/^/,String))while(c--)d[e(c)]=k[c]||e(c);k=[function(e)return d[e]];e=function()return'\\\\w+';c=1;;while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p;('1.0(\\'3 2!\\');',4,4,'log|console|World|Hello'.split('|'),0,))

无论JS代码被如何加密都会被浏览器执行。

JavaScript代码混淆开源项目介绍:

JavaScript 混淆器
JavaScript混淆器
JavaScript Obfuscator 是一款功能强大的免费 JavaScript 混淆器,包含多种功能,可为您的源代码提供保护。
JavaScript代码在线混淆站:ChinaZ.com
https://tool.chinaz.com/tools/jscodeconfusion.aspx
混淆前的代码:

window.alert("XSS")

混淆后的代码:

window["\\x61\\x6c\\x65\\x72\\x74"]("\\x58\\x53\\x53")

本地运行JavaScript代码:
Node是JS语言的编译器,我们能通过NodeJS运行JS代码Node
1.在任意一个编辑软件中编写JS代码,并保存为test.js
console.log(“Hello World”);
2.执行JavaScript:
node test.js
JavaScritp安全问题:

参考资料:

CTF-ALL-IN-ONE
[中文维基百科JavaScript]https://zh.m.wikipedia.org/zh-hk/JavaScript
https://developer.mozilla.org/zh-TW/docs/Web/JavaScript

以上是关于Web安全-JavaScript基础的主要内容,如果未能解决你的问题,请参考以下文章

Web安全-JavaScript基础

JavaEE Tutorials (19) - Web应用安全入门

2018-2019-2 网络对抗技术 20165225 Exp8 Web安全基础

20145309李昊《网络对抗技术》实验9 web安全基础实践

Web信息安全实践_2.5 JS语法基础

同源策略CORS