??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品乱码久久久久久V ,99久久亚洲精品无码毛片,亚洲国产成人精品无码区在线观看 http://www.tkk7.com/lsbwahaha/category/39210.htmlzh-cnSun, 30 Oct 2011 07:53:53 GMTSun, 30 Oct 2011 07:53:53 GMT60java?UReference探讨http://www.tkk7.com/lsbwahaha/archive/2011/10/30/362314.html胡鹏胡鹏Sun, 30 Oct 2011 03:59:00 GMThttp://www.tkk7.com/lsbwahaha/archive/2011/10/30/362314.htmlhttp://www.tkk7.com/lsbwahaha/comments/362314.htmlhttp://www.tkk7.com/lsbwahaha/archive/2011/10/30/362314.html#Feedback0http://www.tkk7.com/lsbwahaha/comments/commentRss/362314.htmlhttp://www.tkk7.com/lsbwahaha/services/trackbacks/362314.html阅读全文

胡鹏 2011-10-30 11:59 发表评论
]]>
理解java中的ThreadLocalhttp://www.tkk7.com/lsbwahaha/archive/2011/10/29/362282.html胡鹏胡鹏Sat, 29 Oct 2011 09:39:00 GMThttp://www.tkk7.com/lsbwahaha/archive/2011/10/29/362282.htmlhttp://www.tkk7.com/lsbwahaha/comments/362282.htmlhttp://www.tkk7.com/lsbwahaha/archive/2011/10/29/362282.html#Feedback0http://www.tkk7.com/lsbwahaha/comments/commentRss/362282.htmlhttp://www.tkk7.com/lsbwahaha/services/trackbacks/362282.html阅读全文

胡鹏 2011-10-29 17:39 发表评论
]]>
TrueZIP使用q程中遇到的问题记录http://www.tkk7.com/lsbwahaha/archive/2011/01/11/342800.html胡鹏胡鹏Tue, 11 Jan 2011 14:30:00 GMThttp://www.tkk7.com/lsbwahaha/archive/2011/01/11/342800.htmlhttp://www.tkk7.com/lsbwahaha/comments/342800.htmlhttp://www.tkk7.com/lsbwahaha/archive/2011/01/11/342800.html#Feedback0http://www.tkk7.com/lsbwahaha/comments/commentRss/342800.htmlhttp://www.tkk7.com/lsbwahaha/services/trackbacks/342800.html最q有Java解压~的需求,java.util.zip实在不好用,对中文支持也不行。所以选择了强大的TrueZIPQ用时遇到了一个问题,做个记录?br /> 解压~代码如下:

ArchiveDetector detector = new DefaultArchiveDetector(ArchiveDetector.ALL,
        new Object[] { "zip", new CheckedZip32Driver("GBK") } );
File zipFile = new File("zipFile", detector);
File dst = new File("dst");
// 解压~?/span>
zipFile.copyAllTo(dst);

代码十分z,注意q个File?/p>

de.schlichtherle.io.File

不是

java.io.File

当处理完业务要删除这个Zip FileӞ问题出现了:
q个文g删不掉!Q!
把自q代码查了好久Q确认没问题后,开始从TrueZIP下手Q发现它有特D的地方的,是提C的:

File file = new File(“archive.zip”); // de.schlichtherle.io.File!
Please do not do this instead:
de.schlichtherle.io.File file = new de.schlichtherle.io.File(“archive.zip”);


This is for the following reasons:
1.Accidentally using java.io.File and de.schlichtherle.io.File instances referring to the same path concurrently will result in erroneous behaviour and may even cause loss of data! Please refer to the section “Third Party Access” in the package Javadoc of de.schlichtherle.io for for full details and workarounds.
2.A de.schlichtherle.io.File subclasses java.io.File and thanks to polymorphism can be used everywhere a java.io.File could be used.

原来两个File不能交叉使用Q搞清楚原因了,加这么一句代码搞定?/p>

zipFile.deleteAll();



胡鹏 2011-01-11 22:30 发表评论
]]>
用linkList实现LRU法http://www.tkk7.com/lsbwahaha/archive/2010/08/15/328918.html胡鹏胡鹏Sun, 15 Aug 2010 12:33:00 GMThttp://www.tkk7.com/lsbwahaha/archive/2010/08/15/328918.htmlhttp://www.tkk7.com/lsbwahaha/comments/328918.htmlhttp://www.tkk7.com/lsbwahaha/archive/2010/08/15/328918.html#Feedback0http://www.tkk7.com/lsbwahaha/comments/commentRss/328918.htmlhttp://www.tkk7.com/lsbwahaha/services/trackbacks/328918.htmlpublic class LRUCache<K,V> {

    final private int capacity;
    final private Map<K,Reference<V>> map;
    final private ReentrantLock lock = new ReentrantLock();
    final private ReferenceQueue<Reference<V>> queue = new ReferenceQueue<Reference<V>>();
   
    public LRUCache(int capacity) {
 this.capacity = capacity;
 map = new LinkedHashMap<K,Reference<V>>(capacity,1f,true){
     @Override
     protected boolean removeEldestEntry(Map.Entry<K,Reference<V>> eldest) {
         return this.size() > LRUCache.this.capacity;
     }
 };
    }
   
    public V put(K key,V value) {
 lock.lock();
 try {
  map.put(key, new SoftReference(value,queue));
  return value;
 }finally {
     lock.unlock();
 }
    }
   
    public V get(K key) {
 lock.lock();
 try {
     queue.poll();
     return map.get(key).get();
 }finally {
     lock.unlock();
 }
    }
 
    public void remove(K key) {
 lock.lock();
 try {
     map.remove(key);
 }finally {
     lock.unlock();
 }
    }

}



胡鹏 2010-08-15 20:33 发表评论
]]>
Unicode??http://www.tkk7.com/lsbwahaha/archive/2009/05/16/270963.html胡鹏胡鹏Fri, 15 May 2009 17:52:00 GMThttp://www.tkk7.com/lsbwahaha/archive/2009/05/16/270963.htmlhttp://www.tkk7.com/lsbwahaha/comments/270963.htmlhttp://www.tkk7.com/lsbwahaha/archive/2009/05/16/270963.html#Feedback0http://www.tkk7.com/lsbwahaha/comments/commentRss/270963.htmlhttp://www.tkk7.com/lsbwahaha/services/trackbacks/270963.html Unicode是一U字W编码规?nbsp;?br />
先从ASCII说v。ASCII是用来表C文字W的一U编码规范,每个ASCII字符占用1个字节(8bitsQ?nbsp;

因此QASCII~码可以表示的最大字W数?56Q其实英文字Wƈ没有那么多,一般只用前128个(最高位?Q,其中包括了控制字W、数字、大写字母和其他一些符?nbsp;?br />
而最高位?的另128个字W被成ؓ“扩展ASCII”Q一般用来存放英文的制表W、部分音标字W等{的一些其他符?nbsp;

q种字符~码规范昄用来处理英文没有什么问?nbsp;。(实际上也可以用来处理法文、d文等一些其他的西欧字符Q但是不能和英文通用Q,但是面对中文、阿拉伯文之cd杂的文字Q?55个字W显然不够用 

于是Q各个国家纷U制定了自己的文字编码规范,其中中文的文字编码规范叫?#8220;GB2312-80”Q它是和ASCII兼容的一U编码规范,其实是利用扩展ASCII没有真正标准化这一点,把一个中文字W用两个扩展ASCII字符来表C?nbsp;

但是q个Ҏ有问题,最大的问题是Q中文文字没有真正属于自q~码Q因为扩展ASCII码虽然没有真正的标准化,但是PC里的ASCII码还是有一个事实标准的Q存攄英文制表W)Q所以很多Y件利用这些符h画表根{这L软g用到中文pȝ中,q些表格W就会被误认作中文字Q破坏版面。而且Q统计中英文混合字符串中的字敎ͼ也是比较复杂的,我们必须判断一个ASCII码是否扩展,以及它的下一个ASCII是否扩展Q然后才“?#8221;那可能是一个中文字 ?br />
M当时处理中文是很痛苦的。而更痛苦的是GB2312是国家标准,台湾当时有一个Big5~码标准Q很多编码和GB是相同的Q所?#8230;…Q嘿ѝ?nbsp;

q时候,我们q道,要真正解决中文问题,不能从扩展ASCII的角度入手,也不能仅靠中国一家来解决。而必L一个全新的~码pȝQ这个系l要可以中文、英文、法文、d?#8230;…{等所有的文字l一h考虑Qؓ每个文字都分配一个单独的~码Q这h不会有上面那U现象出现?nbsp;

于是QUnicode诞生了?nbsp;

Unicode有两套标准,一套叫UCS-2(Unicode-16)Q用2个字节ؓ字符~码Q另一套叫UCS-4(Unicode-32)Q用4个字节ؓ字符~码?nbsp;

以目前常用的UCS-2ZQ它可以表示的字W数?^16=65535Q基本上可以容纳所有的Ƨ美字符和绝大部分的亚洲字符 ?br />
UTF-8的问题后面会提到 ?br />
在Unicode里,所有的字符被一视同仁。汉字不再?#8220;两个扩展ASCII”Q而是使用“1个Unicode”Q注意,现在的汉字是“一个字W?#8221;了,于是Q拆字、统计字数这些问题也p然而然的解决了 ?br />
但是Q这个世界不是理想的Q不可能在一夜之间所有的pȝ都用Unicode来处理字W,所以Unicode在诞生之日,必考虑一个严ȝ问题Q和ASCII字符集之间的不兼定w题?nbsp;

我们知道QASCII字符是单个字节的Q比?#8220;A”的ASCII?5。而Unicode是双字节的,比如“A”的Unicode?065Q这造成了一个非常大的问题:以前处理ASCII的那套机制不能被用来处理Unicode?nbsp;?br />
另一个更加严重的问题是,C语言使用'\0'作ؓ字符串结,而Unicode里恰恰有很多字符都有一个字节ؓ0Q这样一来,C语言的字W串函数无法正常处理UnicodeQ除非把世界上所有用C写的E序以及他们所用的函数库全部换?nbsp;?br />
于是Q比Unicode更伟大的东东诞生了,之所以说它更伟大是因为它让Unicode不再存在于纸上,而是真实的存在于我们大家的电脑中。那是QUTF ?br />
UTF= UCS Transformation Format UCS转换格式 

它是Unicode~码规则和计机的实际编码对应v来的一个规则。现在流行的UTF?U:UTF-8和UTF-16 ?br />
其中UTF-16和上面提到的Unicode本n的编码规范是一致的Q这里不多说了。而UTF-8不同Q它定义了一U?#8220;区间规则”Q这U规则可以和ASCII~码保持最大程度的兼容 ?br />
UTF-8有点cM于Haffman~码Q它Unicode~码?0000000-0000007F的字W,用单个字节来表示Q?nbsp;

00000080-000007FF的字W用两个字节表示 

00000800-0000FFFF的字W用3字节表示 

因ؓ目前为止Unicode-16规范没有指定FFFF以上的字W,所以UTF-8最多是使用3个字节来表示一个字W。但理论上来_UTF-8最多需要用6字节表示一个字W?nbsp;

在UTF-8里,英文字符仍然跟ASCII~码一P因此原先的函数库可以l箋使用。而中文的~码范围是在0080-07FF之间Q因此是2个字节表C(但这两个字节和GB~码的两个字节是不同的)Q用专门的Unicode处理cd以对UTF~码q行处理?nbsp;

下面说说中文的问题?nbsp;

׃历史的原因,在Unicode之前Q一共存在过3套中文编码标准?nbsp;

GB2312-80Q是中国大陆使用的国家标准,其中一q码了6763个常用简体汉字。Big5Q是台湾使用的编码标准,~码了台湾用的J体汉字Q大概有8千多个。HKSCSQ是中国香港使用的编码标准,字体也是J体Q但跟Big5有所不同?nbsp;

q?套编码标准都采用了两个扩展ASCII的方法,因此Q几套编码互不兼容,而且~码区间也各有不?nbsp;

因ؓ其不兼容性,在同一个系l中同时昄GB和Big5基本上是不可能的。当时的南极星、RichWin{等软gQ在自动识别中文~码、自动显C正编码方面都做了很多努力 ?br />
他们用了怎样的技术我׃得而知了,我知道好像南极星曄以同屏显C繁中文为卖炏V?nbsp;

后来Q由于各斚w的原因,国际上又制定了针对中文的l一字符集GBK和GB18030Q其中GBK已经在Windows、Linux{多U操作系l中被实现?nbsp;

GBK兼容GB2312Qƈ增加了大量不常用汉字Q还加入了几乎所有的Big5中的J体汉字。但是GBK中的J体汉字和Big5中的几乎不兼宏V?nbsp;

GB18030相当于是GBK的超集,比GBK包含的字W更多。据我所知目前还没有操作pȝ直接支持GB18030?nbsp;


谈谈Unicode~码Q简要解释UCS、UTF、BMP、BOM{名?nbsp;
q是一程序员写给E序员的味ȝ。所谓趣x指可以比较轻村֜了解一些原来不清楚的概念,增进知识Q类g打RPG游戏的升U。整理这文章的动机是两个问题:

问题一Q?nbsp;
使用WindowsC本的“另存?#8221;Q可以在GBK、Unicode、Unicode big endian和UTF-8q几U编码方式间怺转换。同htxt文gQWindows是怎样识别~码方式的呢Q?br />
我很早前发现Unicode、Unicode big endian和UTF-8~码的txt文g的开头会多出几个字节Q分别是FF、FEQUnicodeQ?FE、FFQUnicode big endianQ?EF、BB、BFQUTF-8Q。但q些标记是基于什么标准呢Q?br />
问题二: 
最q在|上看到一个ConvertUTF.cQ实CUTF-32、UTF-16和UTF-8q三U编码方式的怺转换。对于Unicode(UCS2)、GBK、UTF-8q些~码方式Q我原来׃解。但q个E序让我有些p涂Q想不v来UTF-16和UCS2有什么关pR?nbsp;
查了查相兌料,ȝ这些问题弄清楚了,带也了解了一些Unicode的细节。写成一文章,送给有过cM疑问的朋友。本文在写作时尽量做到通俗易懂Q但要求读者知道什么是字节Q什么是十六q制?br />
0、big endian和little endian
big endian和little endian是CPU处理多字节数的不同方式。例?#8220;?#8221;字的Unicode~码?C49。那么写到文仉ӞI竟是将6C写在前面Q还是将49写在前面Q如果将6C写在前面Q就是big endian。还是将49写在前面Q就是little endian?br />
“endian”q个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开q是从小?Little-Endian)敲开Q由此曾发生q六ơ叛乱,其中一个皇帝送了命,另一个丢了王位?br />
我们一般将endian译?#8220;字节?#8221;Q将big endian和little endianUC“大尾”?#8220;尾”?br />
1、字W编码、内码,带介绍汉字~码
字符必须~码后才能被计算机处理。计机使用的缺省编码方式就是计机的内码。早期的计算Z?位的ASCII~码Qؓ了处理汉字,E序员设计了用于体中文的GB2312和用于繁体中文的big5?br />
GB2312(1980q?一共收录了7445个字W,包括6763个汉字和682个其它符受汉字区的内码范围高字节从B0-F7Q低字节从A1-FEQ占用的码位?2*94=6768。其中有5个空位是D7FA-D7FE?br />
GB2312支持的汉字太?995q的汉字扩展规范GBK1.0收录?1886个符P它分为汉字区和图形符号区。汉字区包括21003个字W?000q的GB18030是取代GBK1.0的正式国家标准。该标准收录?7484个汉字,同时q收录了藏文、蒙文、维向ְ文等主要的少数民族文字。现在的PCq_必须支持GB18030Q对嵌入式品暂不作要求。所以手机、MP3一般只支持GB2312?br />
从ASCII、GB2312、GBK到GB18030Q这些编码方法是向下兼容的,卛_一个字W在q些Ҏ中L有相同的~码Q后面的标准支持更多的字W。在q些~码中,英文和中文可以统一地处理。区分中文编码的Ҏ是高字节的最高位不ؓ0。按照程序员的称|GB2312、GBK到GB18030都属于双字节字符?nbsp;(DBCS)?br />
有的中文Windows的缺省内码还是GBKQ可以通过GB18030升包升U到GB18030。不qGB18030相对GBK增加的字W,普通h是很隄到的Q通常我们q是用GBK指代中文Windows内码?br />
q里q有一些细节:

GB2312的原文还是区位码Q从Z码到内码Q需要在高字节和低字节上分别加上A0?br />
在DBCS中,GB内码的存储格式始l是big endianQ即高位在前?br />
GB2312的两个字节的最高位都是1。但W合q个条g的码位只?28*128=16384个。所以GBK和GB18030的低字节最高位都可能不?。不q这不媄响DBCS字符的解析Q在dDBCS字符时Q只要遇到高位ؓ1的字节,可以将下两个字节作Z个双字节~码Q而不用管低字节的高位是什么?br />
2、Unicode、UCS和UTF
前面提到从ASCII、GB2312、GBK到GB18030的编码方法是向下兼容的。而Unicode只与ASCII兼容Q更准确地说Q是与ISO-8859-1兼容Q,与GB码不兼容。例?#8220;?#8221;字的Unicode~码?C49Q而GB码是BABA?br />
Unicode也是一U字W编码方法,不过它是由国际组l设计,可以容纳全世界所有语a文字的编码方案。Unicode的学名是"Universal Multiple-Octet Coded Character Set"Q简UCؓUCS。UCS可以看作?Unicode Character Set"的羃写?br />
Ҏl基癄全书(http://zh.wikipedia.org/wiki/)的记载:历史上存在两个试囄立设计Unicode的组l,卛_际标准化l织QISOQ和一个Y件制造商的协会(unicode.orgQ。ISO开发了ISO 10646目QUnicode协会开发了Unicode目?br />
?991q前后,双方都认识到世界不需要两个不兼容的字W集。于是它们开始合q双方的工作成果Qƈ为创立一个单一~码表而协同工作。从Unicode2.0开始,Unicode目采用了与ISO 10646-1相同的字库和字码?br />
目前两个目仍都存在Qƈ独立地公布各自的标准。Unicode协会现在的最新版本是2005q的Unicode 4.1.0。ISO的最新标准是10646-3:2003?br />
UCS规定了怎么用多个字节表C各U文字。怎样传输q些~码Q是由UTF(UCS Transformation Format)规范规定的,常见的UTF规范包括UTF-8、UTF-7、UTF-16?br />
IETF的RFC2781和RFC3629以RFC的一贯风|清晰、明快又不失严}地描qCUTF-16和UTF-8的编码方法。我LC得IETF是Internet Engineering Task Force的羃写。但IETF负责l护的RFC是Internet上一切规范的基础?br />
3、UCS-2、UCS-4、BMP

UCS有两U格式:UCS-2和UCS-4。顾名思义QUCS-2是用两个字节编码,UCS-4是?个字节(实际上只用了31位,最高位必须?Q编码。下面让我们做一些简单的数学游戏Q?br />
UCS-2?^16=65536个码位,UCS-4?^31=2147483648个码位?br />
UCS-4Ҏ最高位?的最高字节分?^7=128个group。每个group再根据次高字节分?56个plane。每个planeҎW?个字节分?56?nbsp;(rows)Q每行包?56个cells。当然同一行的cells只是最后一个字节不同,其余都相同?br />
group 0的plane 0被称作Basic Multilingual Plane, 即BMP。或者说UCS-4中,高两个字节ؓ0的码位被UCBMP?br />
UCS-4的BMPL前面的两个零字节得CUCS-2。在UCS-2的两个字节前加上两个零字节,得CUCS-4的BMP。而目前的UCS-4规范中还没有M字符被分配在BMP之外?br />
4、UTF~码

UTF-8是?位ؓ单元对UCSq行~码。从UCS-2到UTF-8的编码方式如下:

UCS-2~码(16q制) UTF-8 字节?二进? 
0000 - 007F 0xxxxxxx 
0080 - 07FF 110xxxxx 10xxxxxx 
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx 

例如“?#8221;字的Unicode~码?C49?C49?800-FFFF之间Q所以肯定要?字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是Q?110 110001 001001Q?nbsp;用这个比Ҏ依次代替模板中的xQ得刎ͼ11100110 10110001 10001001Q即E6 B1 89?br />
读者可以用C本测试一下我们的~码是否正确?br />
UTF-16?6位ؓ单元对UCSq行~码。对于小?x10000的UCS码,UTF-16~码q于UCS码对应的16位无W号整数。对于不于0x10000的UCS码,定义了一个算法。不q由于实际用的UCS2Q或者UCS4的BMP必然于0x10000Q所以就目前而言Q可以认为UTF-16和UCS-2基本相同。但UCS-2只是一个编码方案,UTF-16却要用于实际的传输,所以就不得不考虑字节序的问题?br />
5、UTF的字节序和BOM
UTF-8以字节ؓ~码单元Q没有字节序的问题。UTF-16以两个字节ؓ~码单元Q在解释一个UTF-16文本前,首先要弄清楚每个~码单元的字节序。例如收C?#8220;?#8221;的Unicode~码?94EQ?#8220;?#8221;的Unicode~码?E59。如果我们收到UTF-16字节?#8220;594E”Q那么这?#8220;?#8221;q是“?#8221;Q?br />
Unicode规范中推荐的标记字节序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是Byte Order Mark。BOM是一个有点小聪明的想法:

在UCS~码中有一个叫?ZERO WIDTH NO-BREAK SPACE"的字W,它的~码是FEFF。而FFFE在UCS中是不存在的字符Q所以不应该出现在实际传输中。UCS规范我们在传输字节流前,先传输字W?ZERO WIDTH NO-BREAK SPACE"?br />
q样如果接收者收到FEFFQ就表明q个字节是Big-Endian的;如果收到FFFEQ就表明q个字节是Little-Endian的。因此字W?ZERO WIDTH NO-BREAK SPACE"又被UCBOM?br />
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字W?ZERO WIDTH NO-BREAK SPACE"的UTF-8~码是EF BB BFQ读者可以用我们前面介绍的编码方法验证一下)。所以如果接收者收CEF BB BF开头的字节,q道这是UTF-8~码了?br />
Windows是使用BOM来标记文本文件的~码方式的?br />
6、进一步的参考资?br /> 本文主要参考的资料?nbsp;"Short overview of ISO-IEC 10646 and Unicode" (http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html)?br />
我还找了两篇看上M错的资料Q不q因为我开始的疑问都找C{案Q所以就没有看:

"Understanding Unicode A general introduction to the Unicode Standard" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter04a
"Character set encoding basics Understanding character set encodings and legacy encodings" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter03)




胡鹏 2009-05-16 01:52 发表评论
]]>
Web2.0下的十大安全威胁(?http://www.tkk7.com/lsbwahaha/archive/2009/05/15/270952.html胡鹏胡鹏Fri, 15 May 2009 15:31:00 GMThttp://www.tkk7.com/lsbwahaha/archive/2009/05/15/270952.htmlhttp://www.tkk7.com/lsbwahaha/comments/270952.htmlhttp://www.tkk7.com/lsbwahaha/archive/2009/05/15/270952.html#Feedback0http://www.tkk7.com/lsbwahaha/comments/commentRss/270952.htmlhttp://www.tkk7.com/lsbwahaha/services/trackbacks/270952.html下面列D10个攻?

  1.AJAX中的跨站点脚?/font>

  前几个月Qh们发C多种跨站点的脚本d。在此类d中,受害者的包含信息的浏览器上会q行来自特定|站的恶意JAVA脚本代码? Yamanner蠕虫是一个最q的范例Q它利用Yahoo邮g的AJAX调用中的跨站点脚本机会来d受害者。另一个近期的范例是Samy蠕虫Q它? 用MySpace.com的跨站点脚本漏洞来攻凅RAJAX在客L上运行,它允讔R误书写的脚本被攻击者利用。攻击者能够编写恶意链接来哄骗那些没有? 备的用户Q让他们用浏览器去访问特定的|页。传l应用中也存在这LqQ但AJAXl它d了更多可能的漏洞?font color="#ff0000">例子Q?Yamanner蠕虫利用了Yahoo Mail的AJAX的跨站脚本漏z,Samy蠕虫利用了MySpace.com的跨站脚本漏z?/font>

  2.XML中毒

  很多Web2.0应用中,XML传输在服务器和浏览器之间往复。网l应用接收来自AJAX客户端的XML块。这XML块很可能染毒。多ơ将递归 负蝲应用C出相似的XML节点,q样的技术还q不普遍。如果机器的处理能力较弱Q这导致服务器拒绝服务。很多攻击者还制作l构错误的XML文档Q这? 文档会扰乱服务器上所使用的依赖剖析机制的逻辑。服务器端的剖析机制有两U类型,它们是SAX和DOM。网l服务也使用相同的攻d量,q是因ؓ|络服务 接收SOAP消息Q而SOAP是XML消息。在应用层大范围C用XMLs使攻击者有更多的机会利用这个新的攻d量?/font>

  XML外部实体参照是能被攻击者伪造的一个XML的属性。这会d者能够利用h意的文g或者TCPq接的缺陗XML schema中毒是另一个XML中毒的攻d量,它能够改变执行的程。这个漏z能帮助d者获得机密信息?font color="#ff0000">d者可以通过复制节点q行DOSdQ或者生成不合法的XMLD服务器端逻辑的中断。攻击者也可以操纵外部实体Q导致打开M文g或TCPq接端口。XML数据定义的中毒也可以Dq行程的改变,助攻击者获取机密信息?/font>

  3.恶意AJAX代码的执?/font>

  AJAX调用非常不易察觉Q终端用h法确定浏览器是否正在用XMLHTTPh对象发出无记载的调用。浏览器发出AJAX调用lQ意网站的? 候,该网站会Ҏ个请求回应以cookies。这导致出现泄漏的潜在可能性。例如,U翰已经登陆了他的银行,q且通过了服务器认证。完成认证过E后Q他 会得C个会? cookie。银行的面中包含了很多关键信息。现在,他去览器他|页Qƈ同时仍然保持银行账户的登陆状态。他可能会刚好访问一个攻击者的|页Q在q个 |页上攻击者写了不易被察觉的AJAX 代码Q这个代码不用经q约的同意Q就能够发出后台调用l约的银行|页Q因而能够从银行面取得关键信息q且把这些信息发送到d者的|站。这导致机 密信息的泄漏甚至引发安全H破?font color="#ff0000">AJAX ~码可以在不为用h知的情Ş下运行,假如用户先登录一个机密网站,机密|站q回一个会话cookieQ然后用户在没有退出机密网站的情Ş下,讉Kd? 的网站,d者网上的AJAX~码可以(通过q个会话cookie?)去访问机密网站上的网,从而窃取用L机密信息?注:q里的解释有点含p,? ZԌ览器不会把一个网站的会话cookie传给另外一个网站的Q即文中的这?#8220;When the browser makes an AJAX call to any Web site it replays cookies for each request. ”Q不完全?

  4.RSS/Atom 注入

q是一Ҏ的web2.0d。RSS反馈是h们在门户|站或者网l应用中׃n信息的常用手Dc网l应用接受这些反馈然后发送给客户端的览器。h们可 以在该RSS反馈中插入文本的JavaScript来生对用户览器的d。访问特定网站的l端用户加蝲了带有该RSS反馈的网,q个脚本 ׃q行h——它能够往用户的电脑中安装软g或者窃取cookies信息。这是一个致命的客户端攻凅R更p糕的是Q它可以变异。随着RSS和ATOM 反馈成ؓ|络应用中整合的lgQ在服务器端数据发布给l端用户之前Q过滤特定字W是非常必要的?font color="#ff0000">d者可以在RSS feeds里注入Javascript脚本Q如果服务器端没有过滤掉q些脚本的话Q在览器端会造成问题?/font>

  5.WSDL扫描和enumeration

  WSDL(|络服务界定语言)是网l服务的一个接口。该文g提供了技术,开放方法,创新形式{等的关键信息。这是非常敏感信息,而且能够帮助? 们决定利用什么弱Ҏd。如果将不必要的功能或者方法一直开着Q这会ؓ|络服务造成潜在的灾难。保护WSDL文g或者限定对其的讉K是非帔R要的。在? 际情况中Q很有可能找C些用WSDL扫描的一些漏z?font color="#ff0000">WSDL提供了Web服务所用的技术,以及外露的方法,调用的模式等信息。假如Web服务对不必要的方法没有禁止的话,d者可以通过WSDL扫描扑ֈ潜在的攻ȝ?/font>

  6.AJAX常规E序中客L的确?/strong>

  Zweb2.0的应用用AJAX常规E序来在客户端上q行很多操作Q比如客L数据cd的确认,内容查,数据域等{。正常情况下Q服务端 也应该备份这些客L查信息。大部分开发者都没有q么?他们q样做的理由是,他们假设q样的确认是由AJAX常规E序来负责的。避开ZAJAX的确 认和直接发送POST或者GEThl那些应用——这些应用是诸如SQL注入,LDAP注入{类随确认进入的d主要来源Q它们能够攻ȝl应用的关键? 源——都是可以做到的。这都增加了能够为攻击者所利用的潜在攻d量的数量?font color="#ff0000">假如开发h员只依赖客户端验证,不在服务器端重新验证的话Q会DSQL注入QLDAP注入{等?/font>

  7.|络服务路由问题

  |络服务安全协议包括WS-Routing服务。WS-Routing允许SOAP消息在互联网上各U各样不同的节点中的特别序列中传输。通常 加密的信息在q些节点来回传送。交互的节点中的L一个被d都将致d者能够访问到在两个端点之间传输的SOAP消息。这造成SOAP消息的严重的 安全泄漏。随着|络应用开始被|络服务框架所采用Q攻击者们开始{而利用这些新协议和新的攻d量?font color="#ff0000">Web服务安全协议使用WS-Routing服务Q假如Q何中转站被攻占,SOAP消息可以被截莗?/font>

  8.SOAP消息的参数操?/font>

  |络服务接收信息和来自SOAP消息的变量。修改这些变量是很可能的。例如,“10”是SOAP消息中多个节点中的一个。攻击者可以修改点Qƈ 且尝试不同种的注入攻几Z—比如,SQL,LDAP,XPATH,命o行解释器——ƈ且探索能被他用来掌握及其内部信息的攻d量。网l服务代码中错误? 或者不够完备的输入认使网l服务应用易于发生泄?q是一个目标指向网l服务所带的|络应用的一Ҏ的攻d量?font color="#ff0000">cM于SQL注入Q假如对SOAP消息里节点的数据不做验证的话?/font>

  9.SOAP消息中的XPATH注入

  XPATH是一U用来查询XML文档的语aQ它跟SQL语句很类?我们提供某些信息(参数)然后从数据库中得到查询结果。很多语a都支? XPATH 解析的功能。网l应用接收大型XML文档Q很多时候这些应用从l端用户和XPATH语句中取得输入量。这些代码的D落对XPATH注入没有什么防御能力? 如果XPATH执行成功Q攻击者能够绕q认证机制或者造成机密信息的一些损失。现在h们只知道很少部分的能够被d者利用的XPATH的漏z。阻止这个攻 d量的唯一Ҏ是在给XPATH语句传递变量值的时候提供适当的输入确认?font color="#ff0000">cM于SQL注入Q假如对数据不做验证而直接做XPATH查询的话?/font>

  10. RIA瘦客L二进制的伪?/strong>

  丰富|络应用(RIA)使用非常丰富的UI要素比如Flash,ActiveX控g或者AppletsQ它使用q些要素作ؓ|络应用的基本接 口。这个框架存在几个安全问题。其中最主要的一个就是关于会话管理。它是在览器中q行的,q且׃n相同的会话。同Ӟ׃客户端将下蝲整个二进制元件到 自己的主机,d者就可以颠倒工E的那个二进制文件ƈ且反~译代码。把q些二进制串打包q绕q一些包含在代码中的认证逻辑是有可能实现的。这? WEB2.0框架下的另一个有的d向量?font color="#ff0000">因ؓRich Internet Applications的组件是下蝲到浏览器本地的,d者可以对二进制文件进行逆向工程Q反~译~码Q通过改动文gQ蟩q认证逻辑 ?/font>

  l论

  AJAX,RIA以及|络服务是WEB2.0应用I间的三w要的技术向量。这些技术很有前景,它们带给桌面新的E式Q加Z|络应用的整体效 率和效用。随着q些新技术而来的是新的安全问题Q忽略这些问题将会导致整个世界发生巨大的N。本文中Q我们只讨论?0U攻凅R但是实际上q有很多其他 的攻d量。对q些新的d向量的最好的防MҎ是增加WEB2.0的安全意识,提高代码操作的安全性以及配|的安全?/font>



胡鹏 2009-05-15 23:31 发表评论
]]>
常用的匹配正则表辑ּ和实??http://www.tkk7.com/lsbwahaha/archive/2009/05/15/270865.html胡鹏胡鹏Fri, 15 May 2009 08:06:00 GMThttp://www.tkk7.com/lsbwahaha/archive/2009/05/15/270865.htmlhttp://www.tkk7.com/lsbwahaha/comments/270865.htmlhttp://www.tkk7.com/lsbwahaha/archive/2009/05/15/270865.html#Feedback0http://www.tkk7.com/lsbwahaha/comments/commentRss/270865.htmlhttp://www.tkk7.com/lsbwahaha/services/trackbacks/270865.html
匚w中文字符的正则表辑ּQ?[\u4e00-\u9fa5]
匚w双字节字W?包括汉字在内)Q[^\x00-\xff]
应用Q计字W串的长度(一个双字节字符长度?QASCII字符?Q?br /> String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}
匚wI的正则表辑ּQ\n[\s| ]*\r
匚wHTML标记的正则表辑ּQ?<(.*)>.*<\/\1>|<(.*) \/>/
匚w首尾I格的正则表辑ּQ?^\s*)|(\s*$)
应用Qjavascript中没有像vbscript那样的trim函数Q我们就可以利用q个表达式来实现Q如下:
String.prototype.trim = function()
{ return this.replace(/(^\s*)|(\s*$)/g, "");
} 利用正则表达式分解和转换IP地址Q?br /> 下面是利用正则表辑ּ匚wIP地址QƈIP地址转换成对应数值的JavascriptE序Q?br /> function IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匚wIP地址的正则表辑ּ
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("Not a valid IP address!")
}
}

不过上面的程序如果不用正则表辑ּQ而直接用split函数来分解可能更单,E序如下Q?/p>

var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是Q?+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))

匚wEmail地址的正则表辑ּQ\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匚w|址URL的正则表辑ּQhttp://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

利用正则表达式限制网表单里的文本框输入内容Q?/p>

用正则表辑ּ限制只能输入中文Qonkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"

用正则表辑ּ限制只能输入全角字符Q?onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"

用正则表辑ּ限制只能输入数字Qonkeyup="value=value.replace(/

[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

用正则表辑ּ限制只能输入数字和英文:onkeyup="value=value.replace(/
[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"



胡鹏 2009-05-15 16:06 发表评论
]]>
java获取qq邮箱中的好友列表http://www.tkk7.com/lsbwahaha/archive/2009/05/07/269462.html胡鹏胡鹏Thu, 07 May 2009 09:54:00 GMThttp://www.tkk7.com/lsbwahaha/archive/2009/05/07/269462.htmlhttp://www.tkk7.com/lsbwahaha/comments/269462.htmlhttp://www.tkk7.com/lsbwahaha/archive/2009/05/07/269462.html#Feedback20http://www.tkk7.com/lsbwahaha/comments/commentRss/269462.htmlhttp://www.tkk7.com/lsbwahaha/services/trackbacks/269462.html 如果单的使用java模拟览?讉Kqq mail服务器获?好友列表Q实在是太困难了Q个力有限实C了,想了其他办法Q创Z
web目Q分析不了腾讯是怎么加密Q但我可以作ZU代理,如图Q?br />
   要采用上面的方式来获取好友,大致可以分ؓ一下几个步骤:
1.首先制作一个login.jsp面Q代码直接从腾讯邮g的登陆页面中复制q来Q把面交互的改成我们自q服务?
    (1)获取验证码的地址Q?a >http://ptlogin2.qq.com/getimage?aid=23000101 后面带个随机敎ͼZ防止览器缓存?br />     (2)当用戯入用户名 密码 和验证码Q点登陆的时候,也让用户提交到我们的服务器来?br /> 2. 我这里写了一个servletQ该cL从qq邮g服务器中获取验证码的Q如何获取呢Q我采用的是
httpclient4.0-beta2 包,该包是apache?Apache HttpComponents projectQ是个开源的Q具体用和了解可以讉KQ?br /> http://hc.apache.org/httpcomponents-client/index.htmlQ(该项目功能很强大Q?br />       在获取了验证码之后,qq服务器他在cookie中写了一个verifysessionQ当你点登陆的时?br /> 客户端校验需要?br /> 3. 把客L提交q来的信息我们去hqq服务器,q样׃登陆成功了,服务器会q回带sid的html代码Q解析出来sid的?br /> 然后讉Khttp://m11.mail.qq.com/cgi-bin/addr_listall?sid=" +sid+"&sorttype=null&category=commonQ就获取到qq中好友分l,以及每一个组的链接地址
4.h每一个链? 可以得到每一l的好友?

         上面我只是写了实现的思\Q有兴趣的可以跟我联p,具体代码可以分n l大?。。?nbsp; qqQ?53041869


胡鹏 2009-05-07 17:54 发表评论
]]>
CSVReader的下载地址http://www.tkk7.com/lsbwahaha/archive/2009/05/04/268880.html胡鹏胡鹏Mon, 04 May 2009 12:04:00 GMThttp://www.tkk7.com/lsbwahaha/archive/2009/05/04/268880.htmlhttp://www.tkk7.com/lsbwahaha/comments/268880.htmlhttp://www.tkk7.com/lsbwahaha/archive/2009/05/04/268880.html#Feedback0http://www.tkk7.com/lsbwahaha/comments/commentRss/268880.htmlhttp://www.tkk7.com/lsbwahaha/services/trackbacks/268880.htmlhttp://downloads.sourceforge.net/opencsv/opencsv-1.8-src-with-libs.tar.gz        
  开源的opencsvQ?用来操作csvQ这个还是不错的?nbsp;  要看介绍q是ȝ官方的文档吧Q下了,感觉q不错的~  一些用的东东上面说的很清楚,我也懒的复制了,q个l自己标注下吧。?hoho

胡鹏 2009-05-04 20:04 发表评论
]]>
servlet中获取(其他|站的)验证码,昄在自己页面上http://www.tkk7.com/lsbwahaha/archive/2009/04/23/267226.html胡鹏胡鹏Thu, 23 Apr 2009 12:38:00 GMThttp://www.tkk7.com/lsbwahaha/archive/2009/04/23/267226.htmlhttp://www.tkk7.com/lsbwahaha/comments/267226.htmlhttp://www.tkk7.com/lsbwahaha/archive/2009/04/23/267226.html#Feedback0http://www.tkk7.com/lsbwahaha/comments/commentRss/267226.htmlhttp://www.tkk7.com/lsbwahaha/services/trackbacks/267226.html

String urlStr = "http://xxx.xxx.xx.xx";
         URL url 
= new URL(urlStr);
         URLConnection conn 
= url.openConnection();
          conn.connect();          
          InputStream is 
= conn.getInputStream();
          
        
//得到输入的编码器Q将文g进行jpg格式~码
            JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(is);
         
//得到~码后的囄对象
         BufferedImage image = decoder.decodeAsBufferedImage();
         
//得到输出的编码器
          OutputStream output = response.getOutputStream();
          JPEGImageEncoder encoder 
= JPEGCodec.createJPEGEncoder(output);
          encoder.encode(image);
//对图片进行输出编?/span>
          is.close();//关闭文g?/span>
          output.close();
  比较单。。。。。hoho

胡鹏 2009-04-23 20:38 发表评论
]]>
վ֩ģ壺 ޾Ʒ| ޹Ʒһž| þ㽶߿ۿƬ| ߹ۿ| ޹ƷYW߹ۿ| ˳߲| ŮڵƵ| avպaɫͷ| ɫˬƵ| ҹƵ| ؼëƬߴȫѲ| ѿС12Ƶ| žžžƷƵ| һѹۿwwwƵ| Դ°߹ۿ| 쿴ѸӰ| ŮƵ| ߾Ʒһ| þҹ³Ƭ| ޸Ƶ| ޹˾þۺһ77| 㶮߹ۿ| ޹˾þ99Ʒ| ַѹۿ| ޻Ƭֻѹۿ| þþƷavӰԺ| Ƶۿ| 㶮߹ۿ| һƬ߲| պ޾Ʒ| ޵һ͵Ľ| о벻߹ۿ| ѹۿӰ| ˳ëƬ߲| ?VþþƷ| δʮ18ֹվ| ˳վ| avһ| վƵ߹ۿ| ѹƵ߹ۿ| Ѹ|