删除或更新信息,请邮件至freekaoyan#163.com(#换成@)

基于代码改写的JavaScript动态污点跟踪

本站小编 Free考研考试/2020-04-15

王伟平 , 柏军洋 , 张玉婵 , 王建新
中南大学 信息科学与工程学院, 湖南 长沙 410083

收稿日期: 2016-01-16
基金项目: 国家自然科学基金面上项目(61672543,61572530);国家自然科学基金青年科学基金项目(61402542)
作者简介: 王伟平(1969-),女,教授.Email:wpwang@mail.csu.edu.cn


摘要:随着Web技术的飞速发展,JavaScript的使用越来越常见,尤其是在追求快速及时响应的Web应用中,这也导致了众多安全问题的产生。该文提出了一种基于代码改写的JavaScript动态污点跟踪方法JSTA,通过JavaScript代码的改写,让改写后的代码在执行过程中对敏感数据进行污点标记和跟踪,可及时发现敏感数据泄露行为并给出告警。与以往的研究不同的是,JSTA是独立于JavaScript引擎实现的,可以适用于多种浏览器。测试结果表明,JSTA可有效地跟踪敏感数据并检测敏感数据泄露行为。
关键词: 敏感数据 动态污点跟踪 JavaScript
Dynamic taint tracking in JavaScript using revised code
WANG Weiping, BAI Junyang, ZHANG Yuchan, WANG Jianxin
School of Information Science and Engineering, Central South University, Changsha 410083, China


Abstract:The rapid development of the web has led to increasing use of JavaScript, especially in websites requiring rapid responses between the web server and the client, which has led to many security problems. This paper presents a dynamic taint tracking method based on a revised JavaScript code. The revised code can mark and track sensitive data transmission paths during JavaScript execution and warn the user of possible leakage of the marked sensitive data. This implementation is independent of the JavaScript engine and can be used in a variety of browsers. Tests show that this method can effectively track sensitive data and detect abnormal behavior.
Key words: sensitive datadynamic taint trackingJavaScript
在追求快速及时响应的互联网时代,Web2.0技术的日渐成熟和Ajax框架的普及意味着更多的程序逻辑将由客户端来完成,以最大限度降低客户端与服务器端的交互次数,提高Web应用的性能。 对于Web应用来说,客户端逻辑一般由JS(JavaScript) 语言实现。 但是,JS语言本身所具有的动态复杂性以及开发人员普遍较低的安全意识,导致使用JS语言编写的程序存在着许多安全漏洞。
在黑客利用JS安全漏洞进行的攻击中,以跨站脚本攻击最为常见。 跨站脚本攻击是指攻击者对正常网页通过某种手段植入恶意脚本代码,而这些恶意代码未经过客户端或者服务器端的有效过滤就被作为响应返回给受害者客户端,从而被解释执行[1]
现有针对跨站脚本攻击的解决方案[2-4]主要是对用户输入和服务器输出进行处理,即不信任用户的任何输入,并采用白名单等技术来验证输入参数,并在服务器输出的时候对用户提供的内容进行转义处理。 这类防范方法存在两大难点: 一是如何选择过滤或转义的对象; 二是如何确保对所有的输入点都进行处理即覆盖所有路径。 目前还有一些解决方案[5-8]是使用动态污点分析方法跟踪JS代码的执行,对不可信数据进行污点传播,对相应JS行为进行监测,一旦发现异常行为则根据用户事前定义的动作进行相应的响应。 这类方法的好处在于不需要覆盖全部路径,只对当前JS执行路径进行动态监测。
目前的多数方法对JS代码进行动态污点跟踪是通过修改JS引擎来实现的[5-8]。 这种做法的好处是可以有效地跟踪敏感数据的流向,实现较完全的污点传播。 但是,基于JS引擎的动态污点跟踪对浏览器或JS引擎具有很强的依赖性。 不同版本的JS引擎结构不同,对JS的解析方式也不同,因此开发人员需要对不同的JS引擎进行方法实现,且随着浏览器和引擎的更新而不断更新其实现方法。 这对于开发人员和用户来说,降低了浏览器的可维护性和扩展性。
本文提出了一种独立于JS引擎的动态污点跟踪实现方法JSTA(JS taint analysis)。 JSTA通过对JS代码进行改写,使得改写后的JS代码本身具有自我跟踪的能力,从而实现实时跟踪敏感数据和检测敏感数据的异常流向。
1 JSTA的基本思想图 1给出了一种JSTA应用场景。 部署在代理服务器中的JSTA负责对HTTP(或HTTPS)响应中的JS代码进行改写,经过改写后的HTTP(或HTTPS)响应由代理服务器转发给客户端浏览器。 在浏览器解析接收到的JS代码或者用户浏览页面触发JS代码执行时,通过JSTA添加进去的污点跟踪代码即得以执行,从而使得JS代码在执行时可以自行对敏感数据进行跟踪,并对敏感数据泄露行为进行检测和中断。
图 1 JSTA的应用场景
图选项





在污点跟踪过程中,首先需要对敏感数据进行污点标记,使敏感数据成为污点数据,然后按照污点传播规则对污点数据进行传播,最后在数据出口对数据进行污点判断,从而检测敏感数据泄露行为。
2 敏感数据标记任何能够改变当前页面DOM(document object model)状态的API都被认为是敏感数据[9]。 本文所定义的敏感数据见表 1,包括当前文档的Cookie、 域名、修改时间、载入当前文档的URL、 标题,与页面位置相关的信息如当前URL文档所在的主机名、路径、端口号、协议等。 这些信息一旦泄露都可能被攻击者利用。
在JSTA中,通过在原始数据中增加污点标志来实现污点数据对象,其包含污点数据的原始值、污点标志和对象属性标记,如图 2所示。 其中Org属性是污点数据的原始值,Tainted属性用来标识污点数据,当Tainted为真时,对象为污点数据,Dom属性标识该对象是否为DOM结点,Xhr属性标识该对象是否为XHR(XMLHttpRequest)对象。
表 1 敏感数据
DOM对象对象属性说明
Documentcookie与当前文档有关的所有cookie
domain当前文档的域名
lastModified当前文档最后被修改的日期和时间
referrer载入当前文档的URL
title当前文档的标题
URL当前文档的URL
Locationhash从井号“#”开始的URL(锚)
host主机名和当前URL的端口号
hostname当前URL的主机名
href完整的URL
pathname当前URL的路径部分
port当前URL的端口号
protocol当前URL的协议
search从问号“?”开始的URL(查询部分)


表选项






图 2 污点数据对象
图选项





对敏感数据进行初始污点标记是在JS程序获取敏感数据时,通过JS语言中_defineGetter_方法来实现的。 该方法可以将对象某属性和某方法绑定在一起,当该属性被访问时,绑定的方法就会被调用,并且绑定方法的返回值作为该属性的值被返回。
本文用以上方法来修改敏感数据的返回值,从而实现其初始污点标记。 图 3为对document.cookie进行初始污点标记的例子。 通过_defineGetter_方法将document的cookie属性和方法function()绑定在一起。 在该方法中,创建了一个污点数据对象,该对象的Org属性值为文档的cookie值,Tainted属性值为真(即污点数据对象),Dom属性值为假(即非DOM结点)。 绑定方法返回值为其所创建的污点数据对象,并作为cookie的返回值。 在JS程序中,当通过document.cookie来读取cookie时,真正获取的值是绑定方法所创建的新污点数据对象,而不是原来的字符串,即实现了对cookie的初始污点标记。
图 3 初始污点标记例子
图选项





3 污点传播规则程序信息从一个实体流向另一个实体的过程中,污点标志也应该跟随流动,这个过程即是污点传播。 本文采用的污点传播规则见表 23,分别对应JS基本运算和控制语句。其中: x,x1,x2xn,x1,x2,…,xn,y,v,oV(变量集),cC(常量集),e,e1,e2,…,enE(表达式集),VECE,l,l1,l2,…,ln为语句块,o为对象,op为一元操作运算符或者二元操作运算符,call为调用函数的方法名,caller为函数调用者。
表 2 污点传播规则(基本运算)
语法特征污点传播规则说明
赋值表达式y=xxy如果x是污点数据,则y也是污点数据
算术逻辑运算等表达式op xxyy为表达式的值。 如果x是污点数据,则y也是污点数据
x1 op x2x1→yx2→yy为表达式的值。 如果x1或者x2是污点数据,则y也是污点数据
函数调用call(x1,x2,…,xn)x1x1
x2x2

xnxn
x1y(*)
x2y(*)

xn
y(*)
x1x2…,xn为形参,y为函数返回结果。
一般地,如果调用函数时,实参是污点数据,则对应的形参也是污点数据;
对于本地函数调用,如果传入的参数至少有一个是污点数据,则函数返回结果也是污点数据(带*的规则)
return语句return xxcaller如果返回语句返回的是一个污点数据,则函数调用者获取的返回值也是一个污点数据


表选项






表 3 污点传播规则(控制语句)
语法特征污点传播规则说明
选择语句if(e) do l1
else do l2
el1
el2
如果if语句的判断表达式与污点数据有关,则语句块l1l2处于污点作用域中
switch(e)
do
case e1:l1;
case e2:l2;

case en:ln;
el1
el2

eln
e1l1
e2l2

enln
如果switch语句的判断表达式与污点数据有关,则语句块l1,l2ln处于污点作用域中;
如果e1与污点数据有关,则l1处于污点作用域中; e1,e2en同理
循环语句while(e)
do l
e→l如果while语句的判断表达式与污点数据有关,则语句块l处于污点作用域中
do l
while(e)
e→l如果do…while语句的判断表达式与污点数据有关,则语句块l处于污点作用域中
for
(e1; e2;
e3)
do l
e1l
e2l
e3l
如果for语句的初始化表达式e1或判断表达式e2或更新表达式e3与污点数据有关,则语句块l处于污点作用域中
对象操作语句with(o)
do lfor v in o
do lfor each v
in o
do l
o→l如果对象o与污点数据有关,则语句块l处于污点作用域中


表选项






需要说明的是,在函数调用语句中,函数参数由实参传给形参,不管是引用传递还是值传递,都可看作为赋值操作。 因此,函数参数传递过程采用赋值运算的污点传播规则。
对于控制循环结构,当判断条件与污点数据有关时,则结构中语句处于污点作用域中。 污点作用域中的数据更新操作将导致对应数据成为污点数据。
4 代码改写规则4.1 代码改写方法的基本思想在动态污点跟踪中,污点数据一方面要进行其原来的运算操作,另一方面要根据污点传播规则进行污点标志的传播。 在对某一数据进行污点标志时,实质上是以图 2的污点数据对象代替了其原来的数据结构。 因此,当某个数据成为污点数据时,该数据本身的类型就被改变成了污点数据对象的类型,这意味着其原操作也需要进行相应的改动,否则原程序的功能和逻辑就会出错。 因此,改写JS代码时除了要实现JS自我跟踪功能,还要保证原程序功能和逻辑不受影响。
本文提出的代码改写方法的基本思想是对各种类型的数据操作进行函数封装,在函数内部实现原操作和污点传播。 这种方法分别对污点数据的Org和Tainted字段进行计算,然后再根据相应情况返回结果。 这样既能实现污点传播,还能保证原操作的完整性。
代码改写的基本规则是在污点传播规则的基础上结合JS的基本语法特点而制定的。 表 4列出了部分代码改写的基本规则。
表 4 代码改写基本规则
JS基本语法JS代码修改规则
赋值表达式left=rightleft=assignment (‘=’,left,right,isDom)
left op right(op为+=等运算符)left=assignment_binary(op,left,right,isDom)
二元运算表达式x op y binary (op,x,y)
一元运算表达式op x unary(op ,x)
自增运算表达式a++
a--
++a
--a
((a=a+1)-1)
((a=a-1)+1)
(a=a+1)
(a=a-1)
条件运算表达式condition?
v1:v2
getVal(condition)?conditional(condition,v1):conditional(condition,v2)
本地函数调用call(arg1,arg2,…,argn)local (call,arguments,…)


表选项






对于自増自减运算来说,对它的改写不能简单地进行函数封装。 用函数封装的方式只能保证准确返回自増自减运算表达式的值,却无法实现变量本身的改变。 因为在函数封装后,变量是作为参数传给封装函数的,而变量值的改变被封装在函数中,但是传递给调用函数的变量只是其拷贝,而不是其本身,在函数内部对参数变量所做的修改只是对拷贝的修改,并没有修改变量本身。 本文的做法是先对自増自减运算进行转换(见表 4),再根据相应规则对转换后表达式进行改写。
4.2 方法调用语句的改写规则在对JS代码进行改写的过程中,需要分别处理自定义方法调用和本地方法调用。
对于本地方法调用,由于其本地方法代码不可见,调用时一方面对需要传给本地方法的参数先进行去污操作,再传给本地方法,确保本地方法能够正确处理; 另一方面对本地方法的返回结果根据其传入的参数污点属性进行污点标志。 这样做的原因是本地方法对于JSTA来说是黑盒,无法知道变量传递关系,因此采用这种扩大的污点标记方法,只要有污点数据作为参数,就给返回结果打上污点标记。
对于自定义方法则不做特殊的处理,因为其内部实现在代码中是可见的,只需按相应的规则进行改写。
4.3 对象访问语句的改写规则对于对象访问语句,JSTA对每一次对象访问操作进行函数封装,封装函数的返回结果为不带污点标志的原始数据。 对传给对象方法的参数也用同样的封装函数进行处理,即对参数进行去污处理。 同时设置1个全局变量,通过封装函数对该变量进行操作,当访问对象的返回结果或者传给对象方法的参数为污点数据时,标记该变量,并在整个对象链的访问结束时根据该辅助变量的值对最终返回结果进行污点标志。 以a.b.c(x,y)为例,代码改写后如图 4所示,封装函数的实现如图 56所示。
图 4 改写后的a.b.c(x,y)
图选项





图 5 对象访问的封装函数
图选项





图 6 对象访问链的封装函数
图选项





getVal_Member()函数的功能是返回传入参数的原始值以及根据情况对变量temp_member进行标记,该变量是一个全局变量。 当访问对象是一个污点数据时,或者传给对象方法的参数是一个污点数据时,temp_member值为真,表示整个对象访问链的返回结果与污点数据有关。 member()函数是对整个对象访问链进行封装,在函数内部根据变量temp_member的值对整个对象访问链的最终返回结果进行污点标记,之后再设置temp_member值为假。
4.4 控制循环语句的改写规则对于控制循环语句来说,其判断条件表达式的返回值只能是布尔型数据。 因此在对代码进行改写时,需要对判断条件表达式进行函数封装,在封装函数内部进行污点判断和返回值处理,如图 7所示。
另外,本文所提出的方法是JS的自我跟踪。 因此,在JS代码执行时需要JS本身来区分当前是否运行在污点作用域中。 JSTA利用一个辅助变量的值来标识污点作用域。 污点作用域取决于判断条件表达式的污点属性,因此,该辅助变量的污点作用域标记是在判断表达式的封装函数中进行的,而污点作用域标志的取消是在控制循环语句结束之后的下一条语句中进行的。 在对JS代码进行改写时,当碰到控制循环语句则在其后添加一条语句。
图 7 控制循环语句的判断条件表达式的封装函数
图选项





图 8为例,改写后的代码如图 9所示。 全局变量temp_taint_area用于标识污点作用域。 污点作用域的标识发生在函数getVal_taint_area()中。 全局变量temp_taint_area的复位即污点作用域标志的取消是在tain_area_cancel()函数(见图 10)中实现的。
图 8 控制循环语句示例
图选项





图 9 控制循环语句示例改写后的代码
图选项





图 10 取消污点作用域标志
图选项





5 敏感数据泄露行为检测5.1 敏感数据可能泄露的途径JS中敏感数据泄露行为是指将污点数据发送给第三方服务器。 另外,由于在获取存储于DOM结点中的数据时无法得知该数据在存储之前是否为污点数据,本文将污点数据保存于DOM结点这一行为也认为是敏感数据泄露行为。 JS中的敏感数据泄露行为主要包括:
1) 对location对象或其属性所赋的值为一个指向第三方服务器并且携带污点数据的URL;
2) 通过XHR发送污点数据到第三方服务器;
3) 将污点数据保存于DOM结点。
对敏感数据泄露行为的处理是: JSTA会询问用户,允许则发送数据,不允许则跳过该操作继续执行,从而按照用户意愿放行或者阻止敏感数据外传。
5.2 直接URL传递敏感数据的检测对于节5.1中的泄露行为1,可以检查赋值运算符左边是否为location对象或者location对象的属性,赋值运算符右边数据是否为第三方服务器地址,并携带了污点数据,都是则认为发生了敏感数据泄露。 这个检测是在assignment函数(见表 4)中实现的。
5.3 通过XMLHttpRequest泄露敏感数据的检测在JS中,通过XHR异步发送数据,必须先获得一个XHR对象实例,然后利用这个实例调用open()方法去创建一个新的HTTP请求,在open()方法中需要指定HTTP请求方式以及请求地址,最后调用send()方法把请求发送出去。
对通过XHR方法泄露敏感数据的检测,JSTA首先对创建XHR对象实例的操作进行函数封装,在封装函数内部创建XHR对象实例,封装函数返回一个带标志的XHR对象实例。 还要对open()方法和send()方法进行函数封装。 对于open()方法的封装函数,除了在其内部要创建HTTP请求操作外,还要对传给open()的参数即请求URL进行检测: 如果是一个指向第三方服务器的地址,则对XHR对象实例打上可疑标志; 如果URL携带了污点数据,则对XHR对象实例打上污点标志。 对于send()的封装函数,在其内部则是先判断XHR对象实例本身的标志,再判断send()方法参数的标志: 如果XHR对象实例是污点标志,则直接报警并不再调用send()方法; 如果XHR对象实例是可疑标志,但是传给send()方法的参数为污点数据,则报警并不再调用send()方法; 其余情况则正常调用send()方法。
5.4 将污点数据保存于DOM结点的检测保存数据于DOM结点,意味着赋值运算符左边要么是JS中直接访问DOM结点的方法所对应的一个字符串(见图 11中的赋值方式1),要么是一个变量的属性访问字符串(见图 11中的赋值方式2)。 对于前者,所有直接访问DOM结点的方法都涉及到对document对象的引用。 因此,当赋值运算符左边是一个document的引用链时,则认为赋值运算要将数据保存于DOM结点,只要判断赋值运算符右边是否是污点数据即可。 对于后者,一个变量等同于一个DOM结点,意味着在一个赋值链上,最右端是直接访问DOM结点的方法,而最左端是该变量。 因此,可以利用同理于动态污点跟踪原理的技术来跟踪这个赋值链,标识出所有等同于DOM结点的变量。
图 11 对DOM结点进行赋值的方式举例
图选项





JSTA用member()函数(见图 6)封装对象访问链。 在其实现中,根据传入的isDom参数对对象访问链的最终结果进行DOM结点标记。 DOM标志的传播与污点标志的传播一样。 针对DOM结点的直接赋值方式,JSTA在对赋值运算进行代码改写时,将传给assignment()函数的参数isDom设置为真,以标识当前运算为对DOM结点进行赋值的运算。 assignment()函数将根据传入的参数isDom和left对赋值运算符左边部分进行DOM结点判断,根据参数right进行污点数据判断,从而实现对污点数据存储于DOM结点这一行为的检测,如图 12所示。
图 12 assignment()关于污点数据存储于DOM结点的检测实现
图选项





6 测试评估为了评价JSTA的污点跟踪能力,选择文[10]中用于测试jstaint[5]的专门针对JS敏感数据泄露的测试样例,测试样本总数为134。 测试步骤如下:
1) 利用JSTA对所有的测试样本进行代码改写并生成Html文件;
2) 在浏览器中访问这些Html文件;
3) 观察当存在敏感数据被发送给第三方网站或将敏感数据保存在DOM中时,浏览器是否会报警。
测试所用的软硬件设备包括: Intel奔G645 2.90 GHz CPU、 2G RAM、 Windows XP系统,开发运行环境为JDK 1.7、 MyEclipse 8.5,谷歌浏览器版本为39.0.2171.95 。
测试实验结果见表 5,表明JSTA可以对敏感数据进行污点跟踪和检测异常。 部分样例测试失败是因为敏感数据被传输给了数组的某个元素或对象的某个属性,JSTA的污点标记可以跟踪到特定元素和属性,但当输出整个数组或对象时由于污点标记传播失效就会导致JSTA无法跟踪出现漏报。 而jstaint在处理这类污点跟踪时,采用方法是当数组中的某个元素或者对象中的某个属性成为污点数据之后,整个数组或者整个对象的所有属性都应该成为污点数据,数组的长度也成为污点数据; 当函数的参数是污点数据时,函数参数的长度也应该是污点数据。 尽管可以检测出输出整个数组或对象时的污点传播,但当传递的是该数组的非污点元素和对象的非污点属性时会造成误报。
表 5 实验结果
污点传播方式样本数量检测结果数量
成功失败
赋值运算1331285
算术逻辑运算1221211
循环控制1311229
函数调用32257
DOM赋值1311310


表选项






目前对于JS代码中的数组或对象还没有较为精确完整的污点跟踪方法,而放大或者缩小污点跟踪的方法容易造成误报漏报,如何解决这些问题将是本文下一步的工作内容。 此外,由于JSTA是通过修改JS代码来实现的,因此在对原有的代码进行修改后,改动后代码的功能是否一致也是评估该方法是否有效的一项指标。 本文在对所有的测试样例进行污点跟踪有效性测试之后,对上述测试样本的修改前和修改后的功能进行了对比,发现修改前后的测试样本所具有的功能一致,也就是说,利用JSTA对JS代码进行修改并不影响原JS的功能。
7 结 论本文针对JS代码导致敏感数据外泄问题提出一种独立于JS引擎的动态污点跟踪方法JSTA。 通过对JS代码进行改写,使JS代码具有自我跟踪的能力。 测试结果表明该方法可有效跟踪敏感数据和检测异常行为,为用户提供了一种安全高效的保护机制。

参考文献
[1] Journal of Central South University(Science and Technology), 41(2):649-654.--> OWASP. Cross-site scripting (XSS).(2014-04-22).[2015-04-07]. https://www.owasp.org/index.php/XSS.
[2] Journal of Central South University(Science and Technology), 41(2):649-654.--> Meyerovich L A, Livshits B. Conscript: Specifying and enforcing fine-grained security policies for JavaScript in the browser [C]//Proceedings of the 31st IEEE Symposium on Security and Privacy (SP). Piscataway, NJ, USA: IEEE Press, 2010: 481-496.
[3] Journal of Central South University(Science and Technology), 41(2):649-654.--> Weinberger J, Barth A, Song D. Towards client-side HTML security policies [C]//Proceedings of the 6th USENIX Conference on Hot Topics in Security. Berkeley, CA, USA: USENIX Association, 2011.
[4] Journal of Central South University(Science and Technology), 41(2):649-654.--> Saxena P, Molnar D, Livshits B. SCRIPTGARD: Automatic context-sensitive sanitization for large-scale legacy web applications [C]//Proceedings of the 18th ACM Conference on Computer and Communications Security. New York, NY, USA: ACM, 2011: 601-614. http://cn.bing.com/academic/profile?id=2151619740&encoded=0&v=paper_preview&mkt=zh-cn
[5] Journal of Central South University(Science and Technology), 41(2):649-654.--> Vogt P, Nentwich F, Jovanovic N, et al. Cross site scripting prevention with dynamic data tainting and static analysis [C]//Proceedings of the 14th Annual Network and Distributed System Security Symposium. San Diego, CA, USA: Internet Society, 2007. http://cn.bing.com/academic/profile?id=1222699389&encoded=0&v=paper_preview&mkt=zh-cn
[6] Journal of Central South University(Science and Technology), 41(2):649-654.--> Minded Security. DOMinatorPro: Securing next generation of Web applications. (2012-09-30).[2015-04-07]. https://dominator.mindedsecurity.com./
[7] Journal of Central South University(Science and Technology), 41(2):649-654.--> Lekies S, Stock B, Johns M. 25 million flows later: Large-scale detection of DOM-based XSS [C]//Proceedings of the 20th ACM Conference on Computer and Communications Security. New York, NY, USA: ACM, 2013: 1193-1204. http://cn.bing.com/academic/profile?id=1991074244&encoded=0&v=paper_preview&mkt=zh-cn
[8] Journal of Central South University(Science and Technology), 41(2):649-654.--> Saxena P, Hanna S, Poosankam P, et al. FLAX: Systematic discovery of client-side validation vulnerabilities in rich Web applications [C]//Proceedings of the 17th Annual Network and Distributed System Security Symposium. San Diego, CA, USA: Internet Society, 2010. http://cn.bing.com/academic/profile?id=2405282478&encoded=0&v=paper_preview&mkt=zh-cn
[9] Journal of Central South University(Science and Technology), 41(2):649-654.--> Phung P H, Sands D, Chudnov A. Lightweight self- protecting JavaScript [C]//Proceedings of the 4th International Symposium on Information, Computer, and Communications Security. New York, NY, USA: ACM, 2009: 47-60. http://cn.bing.com/academic/profile?id=2121194882&encoded=0&v=paper_preview&mkt=zh-cn
[10] Journal of Central South University(Science and Technology), 41(2):649-654.--> International Secure Systems Lab. NoMoXSS. (2006-3-29).[2015-04-07]. http://seclab.tuwien.ac.at/projects/jstaint/files/testing.zi

相关话题/数据 代码

  • 领限时大额优惠券,享本站正版考研考试资料!
    大额优惠券
    优惠券领取后72小时内有效,10万种最新考研考试考证类电子打印资料任你选。涵盖全国500余所院校考研专业课、200多种职业资格考试、1100多种经典教材,产品类型包含电子书、题库、全套资料以及视频,无论您是考研复习、考证刷题,还是考前冲刺等,不同类型的产品可满足您学习上的不同需求。 ...
    本站小编 Free壹佰分学习网 2022-09-19
  • 基于IFC的绿色性能分析数据转换与共享
    林佳瑞,张建平清华大学土木工程系,北京100084收稿日期:2016-05-16基金项目:国家“八六三”高技术项目(2013AA041307);国家自然科学基金面上项目(51278274);清华大学—广联达BIM中心项目(RCBIM)作者简介:林佳瑞(1987-),男,博士研究生.通讯作者:张建平, ...
    本站小编 Free考研考试 2020-04-15
  • 考虑交通大数据的交通检测器优化布置模型
    孙智源,陆化普清华大学土木工程系,交通研究所,北京100084收稿日期:2015-05-20基金项目:“十二五”国家科技支撑计划资助项目(2014BAG01B04);清华大学苏州汽车研究院(吴江)返校经费课题(2015WJ-B-02)摘要:为了提高城市交通信息采集的准确性、可靠性和经济性,提出了一种 ...
    本站小编 Free考研考试 2020-04-15
  • LBS大数据中基于固定网格划分四叉树索引的查询验证
    宁博,裴晓霞,李玉居,裴新宇大连海事大学信息科学技术学院,大连116026收稿日期:2015-09-28基金项目:国家自然科学基金青年基金项目(61202083)国家自然科学基金面上项目(61272369)辽宁省教育厅一般项目(L2014055)辽宁省电力有限公司科技项目(2015YF-67)中央高 ...
    本站小编 Free考研考试 2020-04-15
  • 谁在中国股票市场中“博彩”?——基于个人投资者交易数据的实证研究
    廖理1,梁昱2,张伟强11.清华大学五道口金融学院,北京100083;2.清华大学经济管理学院,北京100084收稿日期:2015-10-13基金项目:国家自然科学基金重点项目(71232003);国家自然科学基金面上项目(71271214,71573147);高等学校博士学科点专项科研基金(201 ...
    本站小编 Free考研考试 2020-04-15
  • 基于多分支路径树的云存储数据完整性验证机制
    李勇1,2,姚戈1,雷丽楠1,张晓菲3,杨鲲41.北京交通大学电子信息工程学院,北京100044;2.福建师范大学福建省网络安全与密码技术重点实验室,福州350007;3.中国信息安全测评中心,北京100085;4.中国计量科学研究院,北京100029收稿日期:2016-01-22基金项目:中央高校 ...
    本站小编 Free考研考试 2020-04-15
  • 院系所代码名称的选择
    提问问题:院系所代码名称的选择学院:不区分院系所提问人:79***om时间:2015-09-2415:53提问内容:老师您好,院系所代码名称这一栏,如果考专业性的中医外科学,应该选择不区分院系还是按自己的意愿选择医院?回复内容:按照医院选择,不区分院系所的专业是学术型的。 ...
    本站小编 天津中医药大学 2019-11-27
  • 关于专业代码问题
    提问问题:关于专业代码问题学院:不区分院系所提问人:51***om时间:2014-09-2616:24提问内容:老师您好!请问招生目录里的中西医结合专业代码100602与105126有什么区别呢以后都可以考临床执照吗回复内容:专业型和学术型的区别,具体差异请参看2015年我校硕士招生简章,学术型不可 ...
    本站小编 天津中医药大学 2019-11-27
  • 专业代码
    提问问题:专业代码学院:提问人:17***64时间:2019-09-2014:43提问内容:老师您好,请问报考的时候用将大专业方向代码的后两位改为所含小方向的代码,如果不用,那么小方向的存在只和复试或者以后的研究方向有关?回复内容:建议来电咨询:0531-88364334。 ...
    本站小编 山东大学 2019-11-26
  • 历年数据
    提问问题:历年数据学院:提问人:18***11时间:2019-09-1914:11提问内容:山东大学研究生招生信息网首页历年数据那里硕士自命题和硕士报录比,写的2019点进去是2018年的数据。回复内容:近期就会公布。 ...
    本站小编 山东大学 2019-11-26
  • 学校代码
    提问问题:学校代码学院:山东大学(威海)提问人:15***79时间:2016-09-2315:57提问内容:我是山威的一名学生,请问老师报考时本校的学校代码是多少?写山威的还是山大总校的?还有请问山威金融学的专业代码多少?谢谢老师回复内容:详情请参考招生专业目录http://www.yz.sdu.e ...
    本站小编 山东大学 2019-11-26