Web安全黑盒测试之保证测试的全面性

在目前的 WEB 安全黑盒测试方法中,一般是按照黑客攻击的手法进行测试,以达到准确性与全面性。那么,如何保证黑盒测试的全面性与准确性呢?总结一下,可以有以下几个方面: 1、对产品项目的熟悉程度。 测试之前,对项目进行了解跟踪,熟悉项目的所有功能、接口以及与其他项目的关联性(有时候A项目的功能会造成B项目存在安全风险)。 2、全面的技术知识。 由于每个项目的功能都不同,可能涉及到的应用就不同,有的项目是视频应用,就要了解flash脚本编写技术与前端配置知识,大多数 flash蠕虫都是因为前端配置问题造成的。有些项目用到了AJax,那么测试人员就必须了解AJax的知识。有的项目用到 ActiveX 插件,那么就要知道 ActiveX 可能造成的安全问题,等等。所以,安全测试人员要掌握全面技术知识,才可以对每个项目进行测试,并不因为新项目中包含新的技术而放弃测试。同时还要有不断的学习能力,遇到未知的技术要进行快速学习,然后对项目进行测试。 3、超强的漏洞挖掘能力,以及实战能力。 安全测试时,必须按照黑客攻击的手法进行测试,所以,这就要求WEB安全测试人员拥有超强的漏洞挖掘能力与漏洞认知度。同样还要拥有实战经验,一个没有 实践经验的测试人员,不是一个好的安全测试人员,当安全测试人员并不知道安全BUG所造成的的方式与利用后所造成的影响,就不能全部的发现所有安全 BUG,同时又不能在各个安全BUG危险度上进行分级,这就造成一些安全BUG的疏漏。

MySQL的表分区

MySQL的表分区 文章分类:数据库 一、什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表。mysql5.1开始支持数据表分区了。 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区。当然也可根据其他的条件分区。   二、为什么要对表进行分区 为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率。 分区的一些优点包括: 1)、与单个磁盘或文件系统分区相比,可以存储更多的数据。 2)、对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据。相反地,在某些情况下,添加新数据的过程又可以通过为那些新数据专门增加一个新的分区,来很方便地实现。通常和分区有关的其他优点包括下面列出的这些。MySQL分区中的这些功能目前还没有实现,但是在我们的优先级列表中,具有高的优先级;我们希望在5.1的生产版本中,能包括这些功能。 3)、一些查询可以得到极大的优化,这主要是借助于满足一个给定WHERE语句的数据可以只保存在一个或多个分区内,这样在查找时就不用查找其他剩余的分区。因为分区可以在创建了分区表后进行修改,所以在第一次配置分区方案时还不曾这么做时,可以重新组织数据,来提高那些常用查询的效率。 4)、涉及到例如SUM()和COUNT()这样聚合函数的查询,可以很容易地进行并行处理。这种查询的一个简单例子如 “SELECT salesperson_id, COUNT (orders) as order_total FROM sales GROUP BY salesperson_id;”。通过“并行”,这意味着该查询可以在每个分区上同时进行,最终结果只需通过总计所有分区得到的结果。 5)、通过跨多个磁盘来分散数据查询,来获得更大的查询吞吐量。

全面解析PHP的糟糕设计(转)

编程语言各有优缺点,难道什么环境都为程序员准备好了才叫好?那语言不就单纯成为了使用工具了?毫无创新和深入研究的方式了,禁锢固然风险小,但你人也可能会在禁锢的环境中成长,当然,指出语言的缺点并列出是不反对的事.以下为转载内容, 前言 我的脾气古怪. 我会抱怨很多东西. 这个星球上大多数技术我都不喜欢. PHP不仅使用起来尴尬, 还有要嘛我想要的不适合, 要嘛不是最令人满意, 要嘛违背我的信仰. 我可以告诉你关于一门语言, 所有我想避免的好方式, 所有我喜欢的坏方式. 来吧, 问吧! 谈话会很有趣! php是唯一的例外. 几乎php抽象的所有东西都是支离破碎的. 包括语言, 框架, 整个生态系统都一塌糊涂. 我几乎不能单独列出咒骂的事情, 因为它全身都坏了. 每次我打算编辑一堆杂乱如麻的php抱怨清单的时候, 我都被一些琐事打乱, 越深入就越会发现其它令人震惊的事情. php让人难堪. 它是如此的破碎, 但那些被培训的业余爱好者, 却对它称赞不已. php在做一些徽不足道的挽回措施, 但我选择忘记它. 不过我得让我的系统摆脱这些东西, 也就这样了, 这是最后一次尝试. 打个比喻 我只是随口和 Mel 抱怨下, 而她却坚决让我发表出来. 我甚至说不出来PHP到底怎么了, 因为 — 还好. 想想你有一个, 嗯, 工具箱吧. 一堆工具. 看起来还好, 有标准的东西. 你拔除螺丝钉, 它怪异的有三个头.  OK, 好吧, 这对你不太有用, 但你猜迟早有天会有用. […]

新浪微博如何实现 SSO

新浪微博如何实现 SSO 的分析 最近在使用sina微博时,经常性交替使用 weibo.com 和 t.sina.cm.cn进入我的微博。发现当我在 t.sina.com.cn中登录之后,直接切换至weibo.com,这时候在 weibo.com是已经登录的,当我在 weibo.com进行注销之后,再切换至 t.sina.com.cn,这时候在 t.sina.com.cn也已经是注销的状态了。 对于SSO的实现方案及其机制,早已经不是什么新鲜的技术了,从微软为.net提供的passport机制到java中开源的JBoss SSO、Oracle OpenSSO及经典的 Yale CAS等等之类的开源或一些商业SSO中间件都不失为作为单点登录实现的选择。当然一些企业也会选择自己实现一套适合自己轻量级方案,如采用SESSIONID转递或SESSION同步复制之类的。 可以看得出SSO的价值也是具大的,就拿sina来说吧,增加 weibo.com域名之后,对于用户来说来说没有任何影响,即使你在 t.sina.com.cn中进行登录,可以无缝在两域名之间随意切换,对于它推广weibo.com无非是大大的益处。 由于近年来一直在使用 Yale的CAS作为SSO的方案,觉得 SINA的SSO与Yale-CAS有很多异曲同工之妙,于是便对SINA的SSO进行分析,其中的细节处理还是很值的学习的。当然,由于分析看到的SINA SSO处理都只是一些表现或表面上的东西,再加上其大部分关键的sso js都已经被压缩,及SERVER端的实现机制也只是靠自己的经验及结合CAS的的一些原理进行猜测。其实本文应该叫 <CAS SSO与SINA SSO的实现对比分析>更比较贴切。 好吧,进入正题。

GoAgent(Google App Engine) + 火狐 + Autoproxy 翻墙自由上网

Google App Engine 是一种让您可以在 Google 的基础架构上运行您的网络应用程序。Google App Engine 应用程序易于构建和维护,并可根据您的访问量和数据存储需要的增长轻松扩展。使用 Google App Engine,将不再需要维护服务器:您只需上传您的应用程序,它便可立即为您的用户提供服务。 GoAgent就是一个能运行在Google App Engine上的代理程序。 创建Google App Engine的app后,上传GoAgent服务端到Google App Engine上,即可实现用Google的服务器为自己开代理。 配合火狐 + Autoproxy来翻墙,灰常爽。 1 . 注册Google账号(已经有的跳过) http://accounts.google.com

memcached 使用(perl)

这大体上可以看出,服务器端口缓存技术。 memcached 官方:http://www.danga.com/memcached/ 安装前,先安装 libevent 其上为 linux 软件一般安装,看他们readme文档 $>memcached -d -u nobody -m 512 127.0.0.1 -p 11211 如果有异常, ln -s /usr/local/lib/libevent-1.4.so.2 /lib/libevent-1.4.so.2 参考 http://blog.chinaunix.net/u2/70049/showart_1665279.html 我这就使用 perl 语言了, 其他语言参考 http://code.google.com/p/memcached/wiki/Clients perl 使用 cpan> install Cache::Memcached ;#会使用 perl 我就不说了 代码说明:不停对 key 为test 的值进行递增 #!/bin/perl -w use Cache::Memcached;  my $memd = new Cache::Memcached{servers => [‘127.0.0.1:11211’] }; my $key = ‘test’; $memd->add($key => 1,3600) or warn ‘Alread added’; while(1){ print $memd->get($key),”n”; $memd->incr($key) or warn ‘FAIL!’; }

LINUX下查看CPU负载的vmstat命令

$ vmstat procs ———–memory———- —swap– —–io—- –system– —–cpu——page——-disk——-faults rbw                       avm-fre                        … procs r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。 b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。 cpu 表示cpu的使用状态 us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。 sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。 wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。 id 列显示了cpu处在空闲状态的时间百分比 system 显示采集间隔内发生的中断数 in 列表示在某一时间间隔中观测到的每秒设备中断数。 cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。 memory swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常 free 当前的空闲页面列表中内存数量(k表示) buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。 cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。 swap si 由内存进入内存交换区数量。 […]

Node.js 究竟是什么?(what's that mean?)

简介: Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念。它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物理机的连接代码。 如果您听说过 Node,或者阅读过一些文章,宣称 Node 是多么多么的棒,那么您可能会想:“Node 究竟是什么东西?” 即便是在参阅 Node 的主页之后,您甚至可能还是 不明白 Node 为何物?Node 肯定不适合每个程序员,但它可能是某些程序员一直苦苦追寻的东西。 为试图解释什么是 Node.js,本文将简要介绍一些背景信息:它要解决的问题,它如何工作,如何运行一个简单应用程序,最后,Node 在什么情况下是一个好的解决方案。本文不涉及如何编写一个复杂的 Node 应用程序,也不是一份全面的 Node 教程。阅读本文应该有助于您决定是否应该继续学习 Node,以便将其用于您的业务。