P5 eIRA码是可迭代解码的低密度校验码。它们不仅提供杰出的性能,而且满足线性时间编码。设计优良的eIRA码可以达到极其低的误码率。在这片论文中,我们成功实现了普通FPGA平台对eIRA码的编码。作为证明,我们从例子4中选取了校验矩阵。对于最大的七次迭代和7位精度,错误率相对于双精度浮点数的结果下降小于2/10分贝。需要被注意到的一个很重要的事情是没有误码率接近 。这种性能通常在实际应用中被要求,据我们所知,但至今从未在文献中通过图形编码中实现。
P11 网站安全狗是一款集网站内容安全防护、网站资源保护及网站流量保护功能为一体的服务器工具。功能涵盖了网马/木马扫描、防SQL注入、防盗链、防CC攻击、网站流量实时监控、网站CPU监控、下载线程保护、IP黑白名单管理、网页防篡改功能等模块。能够为用户提供实时的网站安全防护,避免各类针对网站的攻击所带来的危害。
P67 在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活、娱乐等各个方面发挥着重要的作用。其中,由于网络的传播的速度快,查找方便,所以对于音乐的流行以及传播有很大的促进左右,音乐网站也相应出现。
P16 SQL注入,文件上传,代码执行,我们把渗透一个站点的所有重点都放在了这些可以一步到位的漏洞上,我们把这些漏洞称之为高危漏洞,这些漏洞在工具化盛行的今天,已经越来越难见到了.现有的工具检测这些主流漏洞的能力已经非常的强大,我们在一般的测试中,只要掌握这些工具的用法,就可以轻易检测到这些问题的所在,所以企业开始慢慢从关注自身安全转移到关注用户安全,而逻辑漏洞就是被广泛关注的对象。
P18 Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。当H.D. Moore在2003年发布Metasploit时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞。软件厂商再也不能推迟发布针对已公布漏洞的补丁了,这是因为Metasploit团队一直都在努力开发各种攻击工具,并将它们贡献给所有Metasploit用户。
P12 随着Web2.0、社交网络、微博等等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中各种应用都架设在Web平台上,Web业务的迅速发展也引起黑客们的强烈关注,接踵而至的就是Web安全威胁的凸显,黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害。这也使得越来越多的用户关注应用层的安全问题,对Web应用安全的关注度也逐渐升温。
P19 使用Google等搜索引擎对某些特定的网络主机漏洞(通常是服务器上的脚本漏洞)进行搜索,以达到快速找到漏洞主机或特定主机的漏洞的目的。Google毫无疑问是当今世界上最强大的搜索引擎。然而,在黑客手中,它也是一个秘密武器,它能搜索到一些你意想不到的信息。
P13 Web应用程序的安全问题(所有用户输入都是不可信的)致使应用程序实施大量安全机制来抵御攻击。尽管其执行与设计可能千差万别,但几乎所有应用程序采用的安全机制在概念上都具有相似性。 Web应用程序采用的核心防御机制由以下几个核心因素构成: 处理用户访问应用程序的数据与功能,防止用户获得未授权访问; 处理用户对应用程序功能的输入,防止错误输入造成不良行为; 防范攻击者,确保应用程序在成为直接攻击目标时能够正常运转,并采取适当的防御与攻击措施挫败攻击者; 管理应用程序本身,帮助管理员监控其行为,配置其功能。 鉴于它们在解决核心安全问题过程中所发挥的重要作用,一个典型应用程序的绝大多数受攻击面也由这些机制构成。
P20 Web应用程序使用各种不同的技术实现其功能。本章简要介绍渗透侧试员在攻击Web应用程序时可能遇到的关键技术。我们将分析HTTP协议、服务器和客户端常用的技术以及用于在各种情形下呈现数据的编码方案。这些技术大都简单易懂,掌握其相关特性对于向Web应用程序发动有效攻击极其重要。
P127 SQL注入式攻击技术,一般针对基于Web平台的应用程序.造成SQL注入攻击漏洞的原因,是由于程序员在编写Web程序时,没有对浏览器端提交的参数进行严格的过滤和判断。用户可以修改构造参数,提交SQL查询语句,并传递至服务器端,从而获取想要的敏感信息,甚至执行危险的代码或系统命令。 虽然SQL注入攻击技术早已出现,但是时至今日仍然有很大一部分网站存在SQL注入漏洞,在本章开篇中进行的入侵检测中就发现了各大门户网站同样存在SQL注入漏洞,更别说一些小网站了。由于SQL漏润存在的普遍性,因此SQL入侵攻击技术往往成为黑客入侵攻击网站渗透内部服务的首选技术,其危害性非常大。
P53 为开展行业移动应用安全检测服务,结合国内已有的移动APP应用的安全检测规范,我们特组织本次针对国内主流移动APP应用的安全检测工具测试,为移动安全检测工具提供选型参考。
P11 目前移动互联网业务日益繁荣,移动终端越来越多的涉及商业秘密和个人隐私等敏感信息,同时也面临各种安全威胁,如恶意订购、自动拨打声讯台、自动联网等,造成用户的话费损失;木马软件可以控制用户的移动终端,盗取账户、监听通话、发送本地信息等。近期颇受关注的Android平台软件吸费和Android病毒的消息也层出不穷。 APK由类文件、资源文件、so文件等压缩而成。本项目可以静态和动态地对APK进行保护。在App代码层次有多种静态防护措施,包括对加密字符串,混淆代码符号功能来抵挡各种符号表提取工具,以及安全编译器对二进制代码进行逻辑混淆、代码变形和指令混淆,让反编译难上加难。在App运行层次也提供了多种动态防护组件,对资源、调试、注入、钩子等进行动态检测并处理,有效的保护App免受动态工具的分析。
P27 为开展行业移动应用安全检测服务,结合国内已有的移动APP应用的安全检测规范,我们特组织本次针对国内主流移动APP应用的安全检测工具测试,为移动安全检测工具提供选型参考。
P10
P30 在现在越来越安全的体系下,sql injection 这类漏洞已经很难在安全性较高的站点出现,比如一些不错的.NET 或JAVA 的框架基本上都是参数化传递用户输入以及其他一些能防御SQL 注入的API,直接封死注入攻击。在非php 的web 安全中出现概率很大而且威力也很 大的攻击主要有两种,第一种是sql injection,第二种便是上传攻击。(php 的还有本地/远程文件包含或代码注入漏洞等)。
P46 一XSS简介什么是XSSXSS全程(CrossSiteScripting)跨站脚本攻击,是最常见的Web应用程序安全漏洞之一,位于OWASPtop102013年度第三名XSS是指攻击者在网页中嵌入客户端脚本,通常是JavaScript编写的危险代码,当用户使用浏览器浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的从上面中的一段话,可以得知,XSS属于客户端攻击,受害者最终是用户,但特别要注意的是网站管理人员也属于用户之一。这就意味着XSS可以进行“服务端”攻击,因为管理员要比普通用户的权限大得多,一般管理员都可以对网站进行文件管理,数据管理等操作,而攻击者一般也是靠管理员身份作为“跳板”进行实施攻击。XSS攻击最终目的是在网页中嵌入客户端恶意脚本代码,最常用的攻击代码是javascript语言,但也会使用其它的脚本语言,例如:ActionScript、VBscript。而如今的互联网客户端脚本基本是基于Javascript,所以如果想要深入研究XSS,必须要精通Javascript。XSS换句话说,JavaScript能做到什么效果,XSS的胃里就有多大。这完全不是危言耸听。javascript可以用来获取用户的cookie,弹出窗口,那么存在XSS漏洞的网站,XSS就可以用来盗取用户Cookie,废掉页面,导航到恶意网站!更高端的XSS代码完全可以进行监控你的键盘操作,模仿Windows注销界面,诱导你输入开机密码!而攻击者需要做的仅仅是向你的代码中注入Javascript代码!如何挖掘XSS寻找脚本程序的输出显示代码,搜索关键字,显示输出那个变量,跟踪变量是否被过滤。二XSS的类型(一)反射型XSS或不持久型XSS实例1测试结果在这段代码中程序接受name的值,并且输出,如果提交xss.php?name=HIM,那么程序讲输出HIM,如果恶意用户输入username=<script>XSS恶意代码</script>,因为程序并没有进行XSS代码过滤,最终造成反射型XSS漏洞实例2https://public-firing-range.appspot.com/源代碼<script>alert("XSS")</script>实例3</title><svg%20onload=alert("XSS")>(二)储存型XSS或持久型XSS实例1与反射型XSS相比,唯一的区别就是XSS代码被带入数据,在下次浏览时,又被读取出来使用DVWAmysql-uroot–prootshowdatabasesusedvwashowtablesselect*fromguestbookdeletefromguestbook<script>alert(/xss/)</script>实例2<scripttype="text/javascript">window.location='http://www.baidu.com';</script>(三)DOMXSS实例1实验如下实例2<svgonload=alert("0")>(四)变异XSShttp://www.thespanner.co.uk/2014/05/06/mxss/变异XSS是从安全范围引导入不安全的为过滤范围。大多数的常见的变异XSS结构是源于错误的阅读innerHTML之间的代码。一个好的变异XSS例子是使用listing元素使XSS条件满足<listing><imgsrc=1onerror=alert(1)>listing>当linsting的innerHTML之间被读,它转变进入一个image元素,即使原始的HTML被避开。下面的代码例子显示出实际是如何被解析的。<listingid=x><imgsrc=1onerror=alert(1)>listing><script>alert(document.getElementById('x').innerHTML)script>alert的预期的结果是将输出“<imgsrc=1onerror=alert(1)>”然后IE10实际解析返回的结果是“<imgsrc=1onerror=alert(1)>”。引导者从安全范围引导入不安全的为过滤范围。变异XSS影响数据多次被读,第一层是真是的HTML,而且每次读innerHTML之间是被看作其它变异,取决于它变异的次数。http://www.businessinfo.co.uk/labs/mxss/通过使用mxsstool可以轻松知道矢量变异和执行。因为变异XSS影响多个等级,根据下面的HTML将完美有效的,如果你改变等级到2。这读写HTML两次,你当然能增加变异值和无线编译。<listing>&lt;imgsrc=1onerror=alert(
P9 熟悉JavaScript的童鞋应该对Node.js都不陌生,没错Node.js是一个基于ChromeJavaScript运行时建立的平台,用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。正是由于Node.js的这些特性使得其在如今的编程中越来越受欢迎,对于新手程序猿来说很有必要掌握Node.js技术。本文小编就将为大家介绍Node.js中Buffer类的使用,希望对大家学习Node.js有帮助吧。 其实,Buffer类在Node.js的使用中,经常会用到,特别是在用Node.js做服务端开发时,http、tcp、udp、文件io等等类型的操作,都离不开Buffer类。Buffer是什么Buffer代表一个缓冲区,存储二进制数据,是字节流,在网络传输时,就传输的这种字节流。编码格式虽然一般的字符串是有编码格式的,比如UTF-8。但Buffer是没有编码格式的。两者可以相互转换,转换时必须指定编码格式。在http模块中,http.createServer方法需要的回调函数的原型是:function(req,res) 这个回调的第一个参数,req,类型是http.IncomingMessage,而http.IncomingMessage是一个只读的流,实现了Readable接口,stream.Readable读到的数据(监听data事件可以处理),就是Buffer对象,是字节流。而我们在程序中使用时,经常是要转换为String。反过来,res(类型http.ServerResponse,可写的流,实现了Writable接口)有个方法setDefaultEncoding,用来设置流的编码格式,在write数据时,会使用指定的编码格式来编码数据,然后发送给客户端。这就是说,网络传输的是Buffer,程序需要处理String,Buffer和String之间可以转换。Buffer有toString方法,可以按指定的编码格式将字节流转换为String。在文件系统模块中,fs.createWriteStream和fs.createReadStream两个方法都有一个可选参数options,可以指定defaultEncoding,这里指定的编码格式,也是用于在Buffer和String之间转换的。目前我们在Node.js里,Buffer在转换为字符串时,toString方法的第一个参数就是编码类型,支持常见的编码格式:utf8,多字节编码的Unicode字符,大多数文档和网页采用这种编码格式ascii,8bit编码,一个字符占1个字节utf16le,小端编码的unicode字符utf16be,大端编码的unicodeucs2,unicode编码,每个字符占两个字节base64,Base-64字符串编码hex,每个字节编码为两个十六进制字符假如你不确认某个编码格式是否正确,可以使用Buffer.isEncoding(encoding)方法来测试。在使用Buffer的toString方法时,如果你不指定编码格式,则默认使用utf8来转换。toString原型:buf.toString([encoding][,start][,end])第一个参数是编码格式,第二个是开始位置(0到buf.length-1),第三个是结束位置(不包含这个索引位置的数据)。创建一个Buffer实例对于Buffer实例的创建,使用new操作符,有四种方法可实现:newBuffer(size),创建一个指buffer定大小的buffernewBuffer(array),根据一个字节数组来创建一个buffernewBuffer(str[,encoding]),根据一个字符串和编码格式创建buffer,不指定编码时默认使用utf8newBuffer(buffer),根据buffer实例创建一个新的buffer比如下面的代码可以创建Buffer的实例:varbuf1=newBuffer(256);varbuf2=newBuffer("HelloBuffer");varbuf3=newBuffer([0x65,0x66,0x67]);varbuf4=newBuffer(buf2);但有一点需要说明的是,使用newBuffer(size)分配的缓冲区,是未初始化的。那块内存里,可能什么都有。试试下面的代码:varbuf1=newBuffe
P18 CitrixDOCPROPERTYProject虚拟化DOCPROPERTYPurpose解决方案2015年11月什么是服务器虚拟化?服务器虚拟化是一种经过实践验证的技术,它允许多台虚拟机在单一物理服务器上运行。每台虚拟机与其它虚拟机完全隔离开来,并通过系统管理程序(xencenter)的软件层与基础主机分离开。这样,每台虚拟机就能够运行不同的操作系统和应用。由于这些虚拟机与基础主机相分离,所以虚拟机也可以从一台物理服务器移动到另一台而不中断运行,即实时迁移。这些属性正在改变企业实施虚拟计算的方式。‘服务器虚拟化的最佳选择XenServer是在云计算环境中经验证的企业级虚拟化平台,为企业提供创建和管理虚拟基础架构所需的所有功能。深得很多要求严格的企业信赖,广泛使用于运行最关键的应用,已被最大规模的云计算环境所采用。利用思杰的免费服务器虚拟化软件构建虚拟基础架构,或通过高级版整合任何规模的企业。削减成本。通过减少物理服务器数量,可以大大节省购买服务器的投入;其次由于存储的共享性提高,对存储设备的投资也大大节省;硬件的减少降低了硬件的维护和服务费用,并且带来了运营费用的降低,包括:机柜空间、电力消耗、制冷费用、网络设备简化等等,可以看到服务器虚拟化直接给硬件投资带来了比较大的节省。提高IT灵活性和效率。通过动态地调整容量,优化虚拟机布局并自动完成重复性管理任务.提高性能和用户生产率。采用服务器虚拟化技术可以大大提高服务器的业务连续性和灾难备份能力,企业不用再因为服务器维护而终止业务运行,所有的服务器之间都具备了在线备份能力;数据集中管理更加安全,异地灾备也变得更加实时和方便。2.1为什么要选择XENServer?1:动态迁移传统架构下需要到机房进行的服务器维护工作,现在能够在办公时间轻松维护完成,服务器应用实现不停机的实时迁移是虚拟化技术最为吸引用户的一点。XenMotion是XenServer的一项功能,能够将正在运行的虚拟机从一台XenServer主机上迁移到另外一台,而不带有任何停机的危险。这就意味着在整个迁移过程中,被移动的虚拟机在任意时刻都处于正常的工作状态。XenMotion的主要目的是在某台服务器需要进行计划维修的情况下,终端用户无法觉察到应用程序出现过极短暂的中断,令整个服务过程正常顺畅。2:和vmmotion比较XenMotion和VMotion都是致力于在服务器无法正常工作时,将其上正在运行的虚拟机迁移到其他候补服务器上,实现零停机。尽管如此,两者在操作,配置上还是有些许的不同的:1.XenMotion只需要支持软件iSCSI或者NFS;VMotion则可以选择光纤(Fibre),软件或者硬件的iSCSI以及NFS。2.当虚拟机与内部网络相连接时,XenMotion是不可用的;对于VMotion来说,只要相互迁移的两台主机连接的是相同的网络即可,无论该网络是内部的还是外部的。3.XenMotion需要手动操作;VMotion可以手动,也可以通过分布式资源调度程序(DRS)自动进行。3:广泛的虚拟机支持2.2Xenserver存储设计存储部分设计分为服务器的本地存储和远程共享存储两个部分,基本的设计思路是本地存储用于安装XenServer和保存资源池的元数据,远程共享存储保存所有虚拟机的虚拟镜像文件(Virtual Disk Image)以支持XenMotion和HA1:本地存储本地存储可以使用sas磁盘(至少4块),设置raid1+0,或者raid5,只用于安装XenServer本身和保存资源池的元数据(MetaData)。设置raid,防止本地硬盘出现单点故障,提高XenServer本身的可用性。2:远程共享存储为了给所有虚拟服务器提供一个可以在线迁移和保证高可用性的工作环境,建议这些虚拟服务器的镜像文件(VDI)全部保存在远程共享存储上,有两种方式可以选择,其一是使用HBA光纤卡直连后台存储;其二是通过iSCSI的方式连接。存储设备的高可用性非常重要,建议连接到共享存储的每台Xenserver主机配备两块HBA卡,并提供两台物理光纤或IP交换机,在Xenserver上配置存储多路径,避免单点故障3.1与openstack,虚拟化比较1:虚拟机性能比较虚拟机资源都是3核,8G内存。压测方式:压测工具:webbench各虚拟机部署nginx3)压测对象1:192.168.220.140(openstack虚拟机)2:192.168.220.171(citrix虚拟机)3:压测客户端,各虚拟机自身压测结果:从压测nginx并发请求的结果来看,openstack虚拟机性能相对好些。但citrix已虚拟7台云主机,相对来说,citrix性能还是不错的。Cpu,内存,IO压测CPU工具:
P71 Burp Suite是Web应用程序测试的最佳工具之一,其多种功能可以帮我们执行各种任务.请求的拦截和修改,扫描web应用程序漏洞,以暴力破解登陆表单,执行会话令牌等多种的随机性检查。
P12 iPhone/MacObjective-C内存管理教程和原理剖析初学objectice-C的朋友都有一个困惑,总觉得对objective-C的内存管理机制琢磨不透,程序经常内存泄漏或莫名其妙的崩溃。我在这里总结了自己对objective-C内存管理机制的研究成果和经验,写了这么一个由浅入深的教程。希望对大家有所帮助,也欢迎大家一起探讨。此文涉及的内存管理是针对于继承于NSObject的Class。一基本原理Objective-C的内存管理机制与.Net/Java那种全自动的垃圾回收机制是不同的,它本质上还是C语言中的手动管理方式,只不过稍微加了一些自动方法。1Objective-C的对象生成于堆之上,生成之后,需要一个指针来指向它。ClassA*obj1=[[ClassAalloc]init];2Objective-C的对象在使用完成之后不会自动销毁,需要执行dealloc来释放空间(销毁),否则内存泄露。[obj1dealloc];这带来了一个问题。下面代码中obj2是否需要调用dealloc?ClassA*obj1=[[ClassAalloc]init];ClassA*obj2=obj1;[obj1hello];//输出hello[obj1dealloc];[obj2hello];//能够执行这一行和下一行吗?[obj2dealloc];不能,因为obj1和obj2只是指针,它们指向同一个对象,[obj1dealloc]已经销毁这个对象了,不能再调用[obj2hello]和[obj2dealloc]。obj2实际上是个无效指针。如何避免无效指针?请看下一条。3Objective-C采用了引用计数(refcount或者retaincount)。对象的内部保存一个数字,表示被引用的次数。例如,某个对象被两个指针所指向(引用)那么它的retaincount为2。需要销毁对象的时候,不直接调用dealloc,而是调用release。release会让retaincount减1,只有retaincount等于0,系统才会调用dealloc真正销毁这个对象。ClassA*obj1=[[ClassAalloc]init];//对象生成时,retaincount=1[obj1release];//release使retaincount减1,retaincount=0,dealloc自动被调用,对象被销毁我们回头看看刚刚那个无效指针的问题,把dealloc改成release解决了吗?ClassA*obj1=[[ClassAalloc]init];//retaincount=1ClassA*obj2=obj1;//retaincount=1[obj1hello];//输出hello[obj1release];//retaincount=0,对象被销毁[obj2hello];[obj2release];[obj1release]之后,obj2依然是个无效指针。问题依然没有解决。解决方法见下一条。4Objective-C指针赋值时,retaincount不会自动增加,需要手动retain。ClassA*obj1=[[ClassAalloc]init];//retaincount=1ClassA*obj2=obj1;//retaincount=1[obj2retain];//retaincount=2[obj1hello];//输出hello[obj1release];//retaincount=2–1=1[obj2hello];//输出hello[obj2release];//retaincount=0,对象被销毁问题解决!注意,如果没有调用[obj2release],这个对象的retaincount始终为1,不会被销毁,内存泄露。(1-4可以参考附件中的示例程序memman-no-pool.m)这样的确不会内存泄露,但似乎有点麻烦,有没有简单点的方法?见下一条。5Objective-C中引入了autoreleasepool(自动释放对象池),在遵守一些规则的情况下,可以自动释放对象。(autoreleasepool依然不是.Net/Java那种全自动的垃圾回收机制)5.1新生成的对象,只要调用autorelease就行了,无需再调用release!ClassA*obj1=[[[ClassAalloc]init]autorelease];//retaincount=1但无需调用release5.2对于存在指针赋值的情况,代码与前面类似。ClassA*obj1=[[[ClassAalloc]init]autorelease];//retaincount=1ClassA*obj2=obj1;//retaincount=1[obj2retain];//