当前位置:  编程技术>移动开发
本页文章导读:
    ▪浅谈WAP网站保险(转)        浅谈WAP网站安全(转) [摘要]     本文以国内一些知名WAP服务网站安全漏洞为例,浅浅的谈一下关于WAP安全的一些想法。     推荐以下人群阅读:          1. WAP开发人员     2. WAP产品.........
    ▪ 【通译】(18)通知        【翻译】(18)通知   【翻译】(18)通知   see http://developer.android.com/guide/topics/ui/notifiers/index.html   原文见 http://developer.android.com/guide/topics/ui/notifiers/index.html   -------------------------------   Notification.........
    ▪ startActivityForResult 跟 startActivity       startActivityForResult 和 startActivity 首先说下这个问题的情景: 当前的软件有一个主Activity A1 并且从A1可以跳转到A2 A3两个界面 而A2 A3也可以回退到A1 同时在这之间 需要传递一些数据 第一种做法.........

[1]浅谈WAP网站保险(转)
    来源: 互联网  发布时间: 2014-02-18
浅谈WAP网站安全(转)

[摘要]

    本文以国内一些知名WAP服务网站安全漏洞为例,浅浅的谈一下关于WAP安全的一些想法。

    推荐以下人群阅读:
    
    1. WAP开发人员
    2. WAP产品设计人员
    3. “网络安全爱好者”

[正文]

    这要从WEB网站的用户认证说起,那时候我们还在用电脑。在WEB网站中,用户的认证信
息,都存放在COOKIE中,一旦用户登录了,之后对于WEB网站的访问,浏览器每次自动跟随
请求发送出来。当手机刚开始上网,手机浏览器还没有成熟,手机操作系统更加稚嫩,很多
手机浏览器都不认识COOKIE,当然也不支持JavaScript。WAP网站为了留住用户,只好使用
在WEB网站中非常老土的认证,在页面所有的URL连接后,加入一串SID作为下一个页面的默
认参数,当用户浏览一次后,就跟在用户页面上所有的连接后,URL就会变得像这样:

    http://wap.inbreak.net/default.php?sid=xxooxxooxxooxxoo
    
    你可以尝试用手机登录163的WAP网站(wap.163.com),之后会看到所有的连接,都跟
了长长一串,这串中的SID参数,就是为了做认证的。黑客如果能猜到用户登录后那长长的
一串的内容,直接使用自己的浏览器访问,就会变成网站的认证用户了,当然靠猜是不现实
的。

    WEB网站认证信息放在COOKIE时,黑客要用XSS取到COOKIE,其实是很麻烦的,后来有了
httponly,就更讨厌了。现在WAP网站更变态,居然不支持JAVASCRIPT,那怎么才能攻击其
他用户呢?

0×01 友情链接安全问题

    在http head中,有个字段叫referer(文末尾有参考链接),可以取到当前请求是从哪
一个URL过来的。

    使用手机浏览器在访问页面:
    
    http://wap.163.com/

    时看到,页面中有个友情链接指向:

    http://wap.handbb.com/agent.jsp?f=00002910
    
    于是我们点了这个链接。
    
    这时浏览器会发送:   

  • GET http://wap.handbb.com/agent.jsp? f = 00002910  http1.1 
  • Host:wap.handbb.com 
  • Referer: http://wap.163.com/ 
  •     这个数据包给wap.handbb.com网站,在数据包中,有Referer字段。如果黑客能够控制
    wap.handbb.com,就可以轻易取到所有从wap.163.com网站用户link过来的URL。取163的URL
    做什么?

        如果用户登录了,当前用户浏览器上的URL就变成了:
        
        http://wap.163.com/index.do?sid=wAsbVhmXXXXXXXATCu

        有多少用户会从163点友情链接过来,就有多少SID,被黑客拿到后,可以直接访问,就
    变成合法用户了。有空我也去门户网站做广告。或者。。。据观察,目前某些WAP网站风头
    很火,到处挂链接,如果把它。。。

    0×02 用户互动导致SID泄露

        不要动不动黑来黑去,我是爱好世界和平的,有没有不黑网站,就能取到SID的方法呢?

        答案是肯定的!
            
          有不少WAP网站已经慢慢发展了起来,形成了大型网站,也开出很多服务,比如论坛,
    站内消息,邮箱。在WEB安全防御中,虽然做了很多防御,但是通常也是允许大家发广告链
    接的,所以站外链接这块很少有防御,那如果我们能在论坛帖子内容中,插入:

  • < a   href =“http://www.inbreak.net” > http://www.inbreak.net </ a >  
  •     出来,然后诱惑用户点过去,就可以从我们自己的网站获取用户的SID了。最危险的莫
    过于邮箱,比如QQ邮箱就很给力(目前已经修补)。首先给用户发个邮件,内容中加入一
    个link,具体“互动”内容就不用我说了,你懂得。

        当用户使用手机浏览器访问QQ邮箱,打开邮件,会看到一个链接。

        
        就是上图中的“打开活动页面”,只要用户打开了,在我的服务器上,马上获得了这串URL:

  • 2011-1-3 22:11:10-------------http://w34.mail.qq.com/cgi-bin/readmail? sid = 
  • qMXXXXXXXXXXXXXXXXXXXXXM .& disptype = html & mailid = ZC2XXXXXXXXXXXXXXXXXXX11  
  • &t =& conv =& p =& cmid = 
  •     然后直接使用PC上的浏览器可以打开URL,会看到:

        
        显然已经登陆过了,这就通过了QQ登录验证。好,下面我们开始群发QQ邮件。。。(后
    面被和谐了)

        像这样用在WEB网站的邮箱里,其实是个安全的应用,但是来到了WAP的领域,它居然变
    成了漏洞。

    0×03 UCWEB浏览器自动生成链接功能引起的SID泄露

        上一个例子中,其实是在讲QQ邮箱存在一个SID泻露安全漏洞,QQ邮箱可以做防御,不
    允许<a>标签,只允许文本内容是个链接地址即可。当浏览器自己出现了一些安全问题,其
    实也会导致SID被盗。

        大家用智能手机么?有很多比较潮流的手机,阅读短信时,如果短信中出现了URL:
        
        http://www.inbreak.net
        
        那就可以直接点连接打开浏览器访问。这是很普遍的功能,很多短信息阅读软件,都自
    带这个功能。
     
        但是这个特性,如果用在手机浏览器上,就悲剧了!
        
          下载最新的手机浏览器“UCWEB7.4”,我使用的是android版。这个浏览器有个特性,当
    页面代码为:

  • <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" 
  •  "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">  
  • hacked by kxlzx 
  • http://www.inbreak.net 
  •     这是页面源码,本来显示在浏览器上,是一段字符文本,因为链接中没有<a>标签。WML
    和HTML标准都没有让它成为一个可以点击的link,但是UCWEB却会自动把它识别为一个链接。
    这导致N多无辜受害者。

        我们看看其中一个无辜受害者163邮箱。

        163邮箱以及google邮箱相对QQ邮箱,在这里还是很安全的,如果在发送邮件时,出现
    了链接代码为:

  • < a   href = http ://www.inbreak.net > inbreak.net </ a >  
  •     它会自动使用自己的过滤模块替换href部分,替换后结果为:

  • < div > < a   href ="http://mproxy.youdao.com/proxy/jump? u = http %3A%2F%2Fwww.inbreak.net 
  • &amp;keyfrom = jumper .in&amp; c = TRUE &amp; j = 1 &amp;mx" > http://www.inbreak.net < br   />  
  • </ a > </ div >  
  •     这样,打开URL后会由这个服务获取inbreak.net这个网站内容,然后展示给用户,于是
    inbreak.net网站获取到的referer就不再是当前的URL,而是中转站服务发送的URL。这个
    referer其实是没有任何SID的。

        这个163的功能其实本身不是为了安全,而是为了“给用户省流量费”,因为直接访问
    HTML网站,会有大量的垃圾数据产生,所以先中转过滤了一下,再还给用户。

        但是在163邮件中,如果发的不是一个<a>标签的链接,而是单纯的文本文字:
        
        http://www.inbreak.net
        
        再使用UCWEB访问看看:

        UCWEB仍然认为它是一个链接,可以直接click过去。点击后,会看到我又抓到了SID!
    无辜的163邮箱,就这样悲剧了。

        
        但是使用MiniOpera浏览器或android自带浏览器访问,都不会出现这个结果。它们认为
    这只是一段文字,下图是MiniOpera访问的结果:

        
        可以看到,这里显示的那个链接是一个文本,不能直接点击过去。我看到国内WAP网站
    唯一对文本URL防御好的,就是qidian网站。这个网站防御方式猥琐,为了和谐,不顾一切
    的替换掉了”http://”后面的文本内容,当然,这不是一个好的。

    0×04 QQ浏览器自动预读功能引起的SID泄露

        可能有读者跑去给163发邮件推广UCWEB了,别急啊,这儿有个更好玩的浏览器。在QQ手
    机浏览器中有个功能,叫做“智能预读”(手机QQ浏览器1.3(Android)),默认是开启功能
    的。下图:

     
        这个功能也是一个新型的业务,专门用于看新闻,看小说的,我们翻翻介绍:“智能预
    读:当您在浏览当前页面时,浏览器后台自动读取下一个 页面,让您进入下一个页面完全
    没有网络延时”。我很喜欢这个功能,它可以在看新闻时,网速奇快。

        在前文我们讲到,如果我们能在页面上定义一个链接,一旦用户点击,就可以窃取到
    SID号。正是这种攻击,在这里被发挥的淋漓尽致。

        http://www.inbreak.net/?SID=XXXXXXX

        这个URL打开后,可以看到如下页面源码:

  • <? xml   version = "1.0"   encoding = "utf-8" ?>  
  • <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" 
  •  "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">  
  • < html >  
  • < body >  
  • < a   href = "http://www.baidu.com" > 下页 </ a >  
  • </ body >  
  • </ html >  
  •     注意加粗斜体的部分,只要代码中的链接显示名叫做“下页”,抓包看看做了什么:

        果然自动扔到baidu那边去了,referer中带着SID!真的智能啊!
        
        前面打算发邮件的同学,快去改链接显示名吧,居然还在想邮件“互动”内容么?你
    out了,只要可以在用户打开的页面中,出现这个,就不需要用户去点了,他只要看了邮件,
    我们就有SID。

        这个功能真的是漏洞么?
        
        个人认为,在这么优秀的功能面前,神马都是浮云。如果真的要用安全来限制,就在
    referer中,去掉链接参数,或者直接干掉referer字段就可以了。

    0×05 WML注入攻击诱骗用户发短信

        在WAP服务中,并不是所有浏览器都支持Java Script,所以XSS漏洞就显得非常低调
    (当然遇到支持JS的浏览器,也并不是没有用处,这里不谈XSS),但是却给了WML注入的机
    会。这还是要从漏洞的利用价值谈起,我们既然拿着手机在上网,利用漏洞的手段也应该回
    归真实环境。打电话、发短信是我们最常用的联系功能,如果能让用户发短信过来,或许很
    多黑心商家就可以收费了,很多短信服务,都是不小心发了个“A”到某号码才扣费的。那
    些国产的山寨机很多自带这个服务,喜欢的朋友可以买来体验下:)

        搜狐的WAP服务存在这样一个漏洞,看这个链接:

  • http://news.wap.sohu.com/user/index.php? op = getpwd1 & backurl =" /> </ go > </ anchor >  
  • < a   href = "sms:10086?body=我是猪" > < big > 恭喜您随机获得1等奖! 
  • 点这里发送免费短信“我是猪”到10086,填写中奖信息!</ big > </ a > < anchor >  
  • < go   href = "aa" > < postfield   name = "account"  
  • value ="& uID =-ByGdGpCsaolAAAA& uuid = 1wgsb0c139aklAADA  
  •     使用手机访问:

        
        比原来的页面多了这样一行链接,点“恭喜您随机获得1等奖!点这里发送免费短信
    “我是猪”到10086,填写中奖信息!”这段文字,手机浏览器会自动调用短信软件,打开
    短信发送页面,诱惑用户发送“免费”短信。

        在短信链接中,设置为“sms:10086?body=我是猪”,默认短信内容就有了,用户只要
    方便的点击“发送”即可。

    0×06 短信接口漏洞利用

        让门户网站官方发送的短信骗,可以参考我的另一篇文章,如果是某大型门户网站给
    用户发条中奖和登录的短信,一定会起到有趣的效果。

        详见附录[2]。
        
        
    0×07 新的业务,新的方向

        我们最后不谈安全,说下浏览器功能。在PC上,浏览器的功能,几乎都已经固定了,市
    场也早就被几位大牛霸占。而wap浏览器却刚刚开始发展,值得去研究下,它们会搞出来很
    多奇奇怪怪的功能。并且在国内就这点最傻,喜欢山寨,看别人做了什么,自己赶快搞出来,
    学个四不像不说,还很有可能把安全功能掐调,以后关注下说不定就有好玩的出来。

        至于各个问题的,其实本文都已经提及了,就不做最后总结了。WAP安全才刚
    刚起步,这里仅仅提及了个开头,还有很有意思的等待大家发掘。我也在学习中,欢迎大家
    互相交流。

    0×08 附录

    [1] HTTP Referer http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.36
    [2] 浅谈短信接口安全 http://www.inbreak.net/?action=show&id=158
    [3] 作者BLOG http://www.inbreak.net

    感谢幻影WebZine
    http://webzine.ph4nt0m.org/

    空虚浪子心 QQ:4700012
    邮箱 4700012#qq.com
    -EOF-


        
    [2] 【通译】(18)通知
        来源: 互联网  发布时间: 2014-02-18
    【翻译】(18)通知

     

    【翻译】(18)通知

     

    see

    http://developer.android.com/guide/topics/ui/notifiers/index.html

     

    原文见

    http://developer.android.com/guide/topics/ui/notifiers/index.html

     

    -------------------------------

     

    Notifications

     

    通知

     

    Several types of situations may arise that require you to notify the user about an event that occurs in your application. Some events require the user to respond and others do not. For example:

     

    有几种类型的情况可能会导致需要你通知用户关于一个发生在你的应用程序内的事件。一些事件需要用户响应而其它则不需要。例如:

     

    * When an event such as saving a file is complete, a small message should appear to confirm that the save was successful.

     

    * 当一个事件诸如文件保存已经完成,一个小的消息应该出现以肯定保存是成功的。

     

    * If the application is running in the background and needs the user's attention, the application should create a notification that allows the user to respond at his or her convenience.

     

    * 如果应用程序运行在后台并且需要用户注意,应用程序应该创建一个通知以允许用户在方便的时候响应。

     

    * If the application is performing work that the user must wait for (such as loading a file), the application should show a hovering progress wheel or bar.

     

    * 如果应用程序正在执行用户必须等待的工作(诸如加载文件),应用程序应该显示一个悬浮的进度轮或进度条。

     

    Each of these notification tasks can be achieved using a different technique:

     

    这些通知任务的每一种可以用不同的技术实现。

     

    * A Toast Notification, for brief messages that come from the background.

     

    * Toast通知,用于来自后台的简短消息。

     

    * A Status Bar Notification, for persistent reminders that come from the background and request the user's response.

     

    * 状态栏通知,用于来自后台的持久提醒并请求用户的响应。

     

    * A Dialog Notification, for Activity-related notifications.

     

    * 对话框通知,用于与Activity有关的通知。

     

    This document summarizes each of these techniques for notifying the user and includes links to full documentation.

     

    本文总结这些用于通知用户的技术的每一种并包含完整文档的链接

     

    -------------------------------

     

    Toast Notification

     

    Toast通知

     

    (图略:

    这个闹钟被设置为从现在开始17小时又57分钟之后。

     

    A toast notification is a message that pops up on the surface of the window. It only fills the amount of space required for the message and the user's current activity remains visible and interactive. The notification automatically fades in and out, and does not accept interaction events. Because a toast can be created from a background Service, it appears even if the application isn't visible.

     

    Toast通知是一种在窗口表面上弹出的消息。它只填充消息所需数量的空间,而用户的当前活动保持可见和可交互。通知自动地淡进和淡出,并且不会接受任何交互事件。因为一个Toast可以从后台Service中创建,所以即便应用程序不可见它仍会显示。

     

    A toast is best for short text messages, such as "File saved," when you're fairly certain the user is paying attention to the screen. A toast can not accept user interaction events; if you'd like the user to respond and take action, consider using a Status Bar Notification instead.

     

    Toast最适合短文本消息,诸如在你大概肯定用户正在注意屏幕时显示“文件已保存”。一个Toast不能接受用户交互事件;如果你喜欢用户响应和采取动作,请考虑使用状态栏消息代替它。

     

    For more information, refer to Toast Notifications.

     

    想获取更多信息,请参考Toast消息。

     

    -------------------------------

     

    Status Bar Notification

     

    状态栏通知

     

    (图略:

    2009年4月25日 下午3:41

    Android 清空通知

    通知

    特拉维斯

    你在哪里? 下午3:39

     

    A status bar notification adds an icon to the system's status bar (with an optional ticker-text message) and an expanded message in the "Notifications" window. When the user selects the expanded message, Android fires an Intent that is defined by the notification (usually to launch an Activity). You can also configure the notification to alert the user with a sound, a vibration, and flashing lights on the device.

     

    状态栏通知添加一个图标到系统的状态栏(带有一个可选的纸带文本消息)以及在“通知”窗口中的一个可展开的消息。当用户选择被展开的消息时,Android发送一个被通知定义的Intent对象(通常用来启动一个Activity)。你还可以配置通知在设备上用声音,震动,和闪光来提醒用户。

     

    This kind of notification is ideal when your application is working in a background Service and needs to notify the user about an event. If you need to alert the user about an event that occurs while your Activity is still in focus, consider using a Dialog Notification instead.

     

    此类通知是理想的,当你的应用程序正在工作在后台Service并且需要通知用户一个事件。如果你需要提醒用户一个发生在你的Activity仍然处于焦点时的事件,请考虑使用一个对话框通知代替它。

     

    For more information, refer to Status Bar Notifications.

     

    想获取更多信息,请参考状态栏通知。

     

    -------------------------------

     

    Dialog Notification

     

    对话框通知

     

    (图略:

    正在加载。请稍候……

     

    A dialog is usually a small window that appears in front of the current Activity. The underlying Activity loses focus and the dialog accepts all user interaction. Dialogs are normally used for notifications and short activities that directly relate to the application in progress.

     

    对话框通常是一个显示在当前Activity前方的小窗口。底下的Activity失去焦点而对话框接受所有用户交互。对话框通常用于在进度中直接与应用程序关联的通知和短的活动。

     

    You should use a dialog when you need to show a progress bar or a short message that requires confirmation from the user (such as an alert with "OK" and "Cancel" buttons). You can use also use dialogs as integral components in your application's UI and for other purposes besides notifications. For a complete discussion on all the available types of dialogs, including its uses for notifications, refer to Dialogs.

     

    在你需要显示一个进度条或一个需要来自用户的确定的短消息(诸如一个带有“确定”和“取消”按钮的警告)时,你应该使用一个对话框。你可还可以使用对话框作为你的应用程序的用户界面中的集成组件并用于除通知外的其它目的。想获取一个关于所有可用类型对话框的完整讨论,包括它用于通知的使用方法,请参考对话框。

     

    Except as noted, this content is licensed under Apache 2.0. For details and restrictions, see the Content License.

     

    除特别说明外,本文在Apache 2.0下许可。细节和限制请参考内容许可证。

     

    Android 4.0 r1 - 01 Dec 2011 20:53

     

    -------------------------------

     

    Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.

     

    (此页部分内容基于Android开源项目,以及使用根据创作公共2.5来源许可证描述的条款进行修改)

     

     


        
    [3] startActivityForResult 跟 startActivity
        来源: 互联网  发布时间: 2014-02-18
    startActivityForResult 和 startActivity

    首先说下这个问题的情景:

    当前的软件有一个主Activity A1 并且从A1可以跳转到A2 A3两个界面 而A2 A3也可以回退到A1 同时在这之间 需要传递一些数据

    第一种做法是:

     

    Intent intent=new Intent(A1.this,A2.class);
    //给intent通过setExtra等方法设置要传递的信息
    startActivity(intent);

     

     

    在A2中可以通过getIntent()方法将信息取出来

    同理,A2回退到A1 也一样

     

    也就是A1和A2之间互相startActivity

     

    但是在学习的过程中 发现Activity的跳转还存在另外一个方法startActivityForResult

    以A1跳转A2为说明

    启动方式没有改变 只是将startActivity改为startActivityForResult

     

    而此时从A2回到A1 就不需要再次调用startActivity了,而是采用

    Intent intent=new Intent();

    //同样在intent中放置需要传递的信息
    setResult(RESULT_CODE, intent); //RESULT_CODE是一个int值 用于父界面区分
    finish(); //关闭自己 一定要执行这句话

      此时由于子窗口关闭 父窗口就被显示出来,为了取得需要传递的那些值,还需要在父窗口中复写一个重要方法onActivityResult

    @Override
    	protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    		super.onActivityResult(requestCode, resultCode, intent);
    	}

      其中就可以根据resultCode来进行不同的操作了

     

     

    最后 两者之间又有什么区别呢

    default的startActivity的LaunchMode如果在多次反复跳转的情况下 产生多个A1 A2的实例(LaunchMode包括standard,SingleTop,SingleTask,SingleInstance4种)这可能并不是我们期望的

     

    当然还有一个问题 如果采用互相跳转 同时又采用SingleTask的mode 两者之间是不是就相等了。。至少从我的理解来看 是相同的 但是在这样的情况下 觉得startActivityForResult会更方便一些

    1 楼 zhongxinhu 2011-12-30  
    mark!
    2 楼 carlosk 2011-12-31  
    startActivityForResult在sigleTask模式下是无法使用的.

    但经常会有一些Activity需要设置为sigleTask,并且还需要有拍照,找相册等等类似的需求,这样就很难协调.

    我觉得这是Android API的一个不完善的地方.
    3 楼 cookiejj2010 2011-12-31  
    carlosk 写道
    startActivityForResult在sigleTask模式下是无法使用的.

    但经常会有一些Activity需要设置为sigleTask,并且还需要有拍照,找相册等等类似的需求,这样就很难协调.

    我觉得这是Android API的一个不完善的地方.


    的确 在SingleTask下 onActivityResult方法在最初就被执行了 而真正返回的时候却没有执行

        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    HTML标签参考手册 iis7站长之家
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3