[深入学习Web安全](8)跨站之魂-Javascript(补习)

来源:http://bbs.ichunqiu.com/thread-10399-1-1.html?from=ch

万年死宅

首发:i春秋社区

注明:转载请务必注明i春秋社区(bbs.ichunqiu.com)

前言

Hello,大家好,今天开始,我们的SQL注射基础部分就已经结束了。(后面还会有高级部分,例如Bypass WAF,盲注,还有关于SQL注射的各种造轮子……)

那么,从今天开始,我们就进入Web前端的世界吧~~要想玩转前端,很重要的一点就是要会HTML,CSS,JavaScript的基础。

相信大家都是搞Web的,HTML和CSS肯定多少都会一点,但是JS的话,我曾听很多朋友说好难。(听到这句话的时候,我是无语的,能说出这句话的人,肯定是lazy man,根本舍不得花时间去学习)

既然如此,我们就在学习前端的安全之前,先来补习一些简单的JS知识吧~

目录

root@1~# JavaScript简介

root@2~# JavaScript小例子

root@3~# JavaScript变量

root@4~# JavaScript函数

root@5~# JavaScript流程控制

root@6~# JavaScript事件

正文

root@1~# JavaScript简介

我们在补习一些简单的、后面学习所需的JS知识之前呢,先来简单的给大家介绍下JavaScript这门语言。这样有助于大家对JS有个更加完整的理解。

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。

为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。

上面这一段呢,都摘自“百度百科”。因为这样更具有权威性质。但是这种文绉绉的介绍大家读起来也很累,而且可能涉及到一些专有名词,导致大家没办法理解它的意思。

所以,我还是稍微说一下吧。首先,JS是一种直译式的脚本语言。什么是直译式的脚本语言呢?其实就是那些把代码写在文本里,用解释器直接执行文本中代码的语言,就类似于我个人很常用的Python和PHP,这些都是不用编译直接通过解释器执行的语言,而不像C/C++一样,需要先编译了才能运行。

然后JS的第二个特点就是“弱类型”,什么意思呢?我们来看如下代码:

[C]纯文本查看复制代码

?

1

2

3

4

5#include [/color]

[color=#000000]intmain(){[/color]

[color=#000000]inta = 10;[/color]

[color=#000000]return0;[/color]

[color=#000000]}

这是一段C语言代码,在main函数中,定义了一个int型变量a,值为10。那么在后面的执行过程中,这个变量a就一直是int型了。在后文中就无法对a赋值浮点数和字符串了。而JS呢,则不一样:[AppleScript]纯文本查看复制代码

?

1

2

3var a=10;//此时为int

a="Hello World!";//此时为string

/*同样是变量a,却可以存储两种不同类型的数据*/

可以看到,同样是变量a,在JS中就可以随存储的值的类型不同而导致变量的类型不同。

OK,就到这里吧,我们接着看下一个内容。

root@2~# JavaScript小例子

OK,接下来,我们来看几个JS的小例子,来简单看一下JS能做什么。

#栗子1——页面输出:

首先,要进行页面输出,我们就得使用到document.write()方法,首先document是一个对象,从JS一开始就存在的一个对象,它代表当前的页面(文档),我们调用它的write()方法就能够向该对象中写入内容,我们看如下代码:

我们从外部引入了一个app.js文件,内容如下:

我们来加载一下,效果如下:

OK了,可以看到效果了,如果,对于前面,我说的document不理解的童鞋这下可以理解了,所谓的document对象其实就是app.html,也就是引入app.js的那个html文件,我们如果不在某个document里执行JS,则会发生这样的的事情:

接着我们来看栗子2。

#栗子2——响应事件

这是JS最常见的一个应用,我们举例如下页面:

多了个按钮button,我们将app.js的内容清空,访问如下:

我们可以看到一个Say Hello按钮,但是如果我们点击它却又什么用都没有。

于是我们就可以个这个元素添加onclick属性,让它有点用:

我们添加了onclick属性之后,一但这个元素被点击,就会调用onclick的值,这里是beClick()函数,我们在app.js中定义这个函数:

接着,我们再来点击的话:

接下来是第三个栗子了。

#栗子3——获取并修改元素

我们这次的doucment如下:

清空app.js,浏览下:

我们这下子来尝试通过JS修改h1元素的值,首先给h1元素加个id,如下:

然后给button加个onclick事件:

然后修改app.js为:

然后浏览页面如下:

然后点击一下x按钮,效果如下:

O了,关于JS的应用的演示就到这里了。我们来看下个内容。

root@3~# JavaScript变量

OK,接下来,我们来正式的补习一点JS的知识,首先就是JS的变量。我们在JS中定义变量通常是使用:

[JavaScript]纯文本查看复制代码

?

1

var变量名;

来定义的。

我们举个例子:

这个栗子中变量a是一个整型(整数)数据,b是一个浮点型(小数)数据,c是字符型(字符串)数据,d是布尔型(真和假)数据。

我们来看数据的运算与操作。首先,我们看如下栗子:

那么这个变量d的值就为100了,嘿嘿,接着,我们来看如下这个栗子:

这样的话c就是1.9,浮点型数据加上整形数据就会成为浮点型数据。

再看这样一个栗子:

我们的c的值就成了HelloWorld,不信你看:

好的,JS的变量部分就讲到这里了,我们接着下一个内容。

root@4~# JavaScript函数

OK,接着来说JS的函数,所谓函数是怎么一回事呢?我们先来想像一下,当我们要写上万行代码来实现某些功能的时候,如果在不实用函数的情况下,根本无法理清代码之间的逻辑。

但是我们使用函数的情况下,就不会了。在JS中定义函数的方法很简单,就是:

[JavaScript]纯文本查看复制代码

?

1

2

3function函数名(参数表){

函数体;

}

我们来看个栗子:

我们来加载一下,看下console的输出:

这就是函数,大家自行体会一下,这个不怎么好解释,有些人体会好了就会了结构化程序设计。。。

这就是自定义函数了,我们再来看下,JS自己的函数:

然后,加载一下:

哈哈,我都有点佩服我的机智~~哈哈哈哈哈哈。好了,不开玩笑了,一会被这对“新人”知道了可就不好了。(哈哈哈哈哈哈哈,还是忍不住幸灾乐祸一番啊,哈哈哈哈哈)

root@5~# JavaScript流程控制

好了,接下来,我们来学习JS的流程控制,首先是if...else...语句。我们来看一个实际栗子:

我们来看下效果:

接下来,我们来看switch...case...流程,这个就不像if...else...流程了,这个要比if...else...流程稍微难一些。

我们得先接触一下,这个流程的结构如下:

[JavaScript]纯文本查看复制代码

?

01

02

03

04

05

06

07

08

09

10

11switch(a){

case1:

alert(1);//当a为1时要执行的

break;

case2:

alert(2);//当a为2时要执行的

break;

default:

alert("Unkonw!");//既不是1也不是2时要执行的

break;

}

我们接下来就来看个栗子:

我们来看效果:

再接下来就是For循环,JS的For循环和C语言的是一样的,和Python的是不一样的,我们来看:

[JavaScript]纯文本查看复制代码

?

1

2

3for(初始化变量;循环条件;改变条件){

循环体;

}

我们就来举个栗子讲解:

这个For循环的第一个位置var i=0就是初始化变量,然后设定循环条件为i小于100,最后每次循环体执行后就把i的值加1。

我们来看效果:

一直不停的弹窗,弹了100次。。(坑人必备。。其实坑不了,因为有个禁止此页再显示对话框。。。)

接着是While循环,结构如下:

[AppleScript]纯文本查看复制代码

?

1

2

3while(循环条件){

循环体;

}

我们来看一个实际栗子:

还是弹TT一百次啦,哈哈。

好了关于JS的流程控制就到这里,我们再来整个我看了很爽的代码:

嘿嘿嘿嘿嘿嘿嘿嘿。。。。(别说我猥琐。。。)

root@6~# JavaScript事件

最后,我们就拿JS事件来结尾吧,先上图:

OK了,JS就这些事件,常见的呢,我们就来演示一下,首先是onclick事件,就是被点击:

接着,我们来浏览器上看看:

点一下ClickMe就会弹窗,接下来,我们再来演示onmouseoutonmouseover事件,代码如下:

Browser上打开,如下:

然后把鼠标移到TEXT上面:

OK了,相信补习的这点JS暂时够用了,大家下来自己在仔细的琢磨一下,在顺便自己实验一下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,568评论 25 707
  • 第一部分 准入训练 第1章 进入忍者世界 js开发人员通常使用js库来实现通用和可重用的功能。这些库需要简单易用,...
    如201608阅读 1,288评论 6 2
  • 这篇文章来源于我与诗人赵岚聊天中的一句玩笑话。 中国古代的诗歌唱和,始于东晋,盛于唐宋。不过一般所称的唱和应该是写...
    陈子弘阅读 492评论 2 1
  • 闹心!!!!! 我知道我这次是把自己置之死地了, 能不能后生!!! 就看自己了! 可我自己做的并不够好! 所以才会...
    不要做半吊子阅读 111评论 0 0