跨站脚本攻击XSS的原理与预防

简介:

用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。许多流行的留言本和论坛程序允许用户发表包含HTMLJavaScript的帖子。假设用户甲发表了一篇包含恶意脚本的帖子,那么用户乙在浏览这篇帖子时,恶意脚本就会执行,盗取用户乙的session信息。

类型:

一. 反射型XSS(非持久型XSS

反射型XSS只是简单地把用户输入的数据“反射”给浏览器。黑客往往需要诱使用户“点击”一个恶意链接,才能攻击成功。

二. 储存型XSS(持久型XSS

存储型XSS会把用户输入的数据“存储”在服务器端。这种XSS具有很强的稳定性。如:黑客将一段恶意JavaScript代码写入博客,那么所有访问该博客的用户,都会在他们的浏览器中执行这段JavaScript代码。

三. DOM Based XSS

这种类型的XSS并未按照“数据是否保存在服务器端”来划分,DOM Based XSS本质上也是反射型XSS。单独划分出来,是因为DOM Based XSS的形成原因比较特别。通过修改页面的DOM节点,形成的XSS,称之为DOM Based XSS

jQuery对象入门级介绍

你是否曾经见过像  $(“.cta”).click(function(){})这样的JavaScrip代码?或许你还会思考下$(‘#X’) 是什么,如果看到这些你都觉得摸不着头脑,那请一定要读完这篇文章。如果你觉得上述的代码片段是不能正常工作的,那请先看一些jQuery的代码范例,你会发现链接中的代码都是这样的结构。

这篇文章将会分析下面代码片段(动画化一个方形)中出现的一些关键知识点。你可能不会经常接触这样的代码,但了解一下这段代码的机制有助于你理解jQuery:

1
2
3
4
5
 $(document).ready(function(){
     $(“button”).click(function(){
         $(“div”).animate({height:”toggle”}).append(“hi”);
     });
 });

我们将会逐字逐句地解释上述的代码,告诉你JavaScript函数、jQuery对象还有事件驱动编程的具体细节。希望看完这篇文章以后,再遇到神秘的jQuery代码时你不会再头疼。

$是什么?

详解Javascript中的Url编码/解码

摘要

本文主要针对URI编解码的相关问题做了介绍,对Url编码中哪些字符需要编码、为什么需要编码做了详细的说明,并对比分析了Javascript中和编解码相关的几对函数escape / unescape,encodeURI / decodeURI和encodeURIComponent / decodeURIComponent。

预备知识

   foo://example.com:8042/over/there?name=ferret#nose  
   \_/  \______________/ \________/\_________/ \__/ 
     |                 |                        |                    |             | 
scheme     authority               path             query      fragment

URI是统一资源标识的意思,通常我们所说的Url只是URI的一种。典型Url的格式如上面所示。下面提到的Url编码,实际上应该指的是URI编码。

FF和IE之间7个JavaScript的差异

尽管 JavaScript 历史上使用冗长而令人生厌的代码块来标的特定浏览器的时期已经结束了,但是偶尔使用一些简单的代码块和对象检测来确保一些代码在用户机器上正常工作依然是必要的。

这篇文章中,我会略述一下 Internet Explorer 和 Firefox 在 JavaScript 语法上不同的 7 个方面。

1. CSS “float” 属性

JS基础教程——JavaScript基础知识(2.1.1变量的类型)

 正像介绍JavaScript常量那样,JavaScript与Java等编辑语言并不相同,我们熟知,Java中有固定的数据类型,如int型、float型,虽然JavaScript中有这些数据类型,但是在声明中无需对变量进行声明。这就意味着JavaScript的变量可以存放任何类型的值。例如,下例中将一个变量复制给整数,然后将一个boolean值直接赋值给它,这是完全合法的:

8个超实用的jQuery技巧攻略

1)禁用右键单击功能 

如果你想为用户节省网站信息,那么开发者可以使用这段代码——禁用右键单击功能。

<font><font>$(document).ready(function() {
//catch the right-click context menu
$(document).bind("contextmenu",function(e) { 
//warning prompt - optional
alert("No right-clicking!");

//delete the default context menu
return false;
});
});</font></font>

2)使用jQuery设定文本大小

JS基础教程——JavaScript基础知识(1.6日期和时间对象)

JavaScript的日期对象提供了一种简单的方式来使用日期和时间值,其中封装了有关日期和时间的操作,它有大量设置、获得和处理日期和时间的方法,但是没有任何属性。下面将从创建Date对象实例和Date对象的方法两方面进行介绍。

(1)创建Date对象实例。具体语法如下:

JS基础教程——JavaScript基础知识(1.5函数-1.5.2函数的参数及返回值)

参数即参变量,他是函数间相互传递信息的枢纽。如果经常进行编程,应该很容易理解将一个值当作参数传递给另一个参数,或者将一个函数的返回值当作参数传递给另一个参数。而用到这些数据的函数也是通过参数获取数值的。一个函数中的参数可以有多个,每个参数间以逗号进行间隔。具体带有参数的函数格式如下:

函数名(参数,参数2,参数三,......)

下面的实例充分显示出带有参数的函数应用方法。