我不是很能理解是否天猫能良数码可信吗

我跟现在的男友是在百合上认识的。两人聊得很投机。每晚都要网聊到凌晨。于是,一个月后见面,见面后的感觉与网上没什么区别,于是,自然而然的牵手。因为相隔较远,加之我有时候周末要工作,于是,我们半个月见一次面。当然,这期间,我们的电话聊天,网聊都一直火热。第三次是我去他那儿见的他。
我跟现在的男友是在百合上认识的。两人聊得很投机。每晚都要网聊到凌晨。于是,一个月后见面,见面后的感觉与网上没什么区别,于是,自然而然的牵手。因为相隔较远,加之我有时候周末要工作,于是,我们半个月见一次面。当然,这期间,我们的电话聊天,网聊都一直火热。第三次是我去他那儿见的他。住在酒店里,他亲吻拥抱了我。再后来,三个月后,他要求要爱爱,我拒绝了。他说:这说明,我的内心还没有完全接受他。后来的电话里,他说:我还是太矜持了点。如果没那么矜持就好了。其中有一个细节 ,上次,他来时,刚好我请朋友吃饭,他一起了,喝醉了。我们把他扶到最近的一家旅馆休息。后来,他起来了,找到了我。然后,说送我回家,就赖在我家不走了,睡在我的床上。当然,他更强烈的要求,我也拒绝了。。。在他来之前,他就说,晚上我总睡不好,他陪我。还说,保证绝对不做坏事,但在他要求要爱爱时,他说,他带的有套,当时,我就觉得,他是早有预谋的感觉。而他说,这只是充分准备嘛
从他那儿来我这儿单程要5小时,他也跑了这么长时间了。而且,平时的聊天中,感觉他也蛮真诚的。我到底要不要相信他啊?
当你问这个问题是,,你的心会告诉你,还不到时候,他还没有给你充分的感觉,还没有让你的心信服,你的心还没有准备好去接受他,也许你的教育不让你的心轻易打开,也许他没有找到打开你心的钥匙,但是我要告诉你,永远要相信自己的心,真心是发自爱,充满光明的,如果心不接受,那是还没有到时候,如果他真心爱你,一定会耐心等你的心打开,如果他等不及,那我为他遗憾。
如果是我,我愿意用自己的一切感觉去体验我爱的人:
感情是这样深入的:
她看是去很可爱 -用眼睛去享受
她说的话很动听--用耳朵去体会
感觉和她在一起很愉快--用身体去感受
我体会到了她的心跳--用心去共振
我愿意和她一起歌唱--用全身愉快的细胞去拥抱
甚至愿意用嘴去品尝
愿意把身心与她融合。。。
忘掉你所有的烦恼,只用你的感觉和真心去体验
当你们都打开所有的感觉,一切都是那么自然
只有你爱自己接纳自己
和平,愉快,自信,
你会教会他也这样
同时从对方的眼里看到可爱的你
推荐你看看《轻而易举的富足》 彼尚
其他答案(共10个回答)
的话,他是会尊重你的决定的,如果他只为了你的性爱欲望坚持不住,那就证明只是想得到你的身体,他根本没爱过你的心。我凭什么这样说呢?因为我是男人,我也曾经尊重过我女朋友,如今我女朋友不是我女朋友了,她是我老婆了,呵呵。记住,在没结婚之前要保持自己的底线,祝你好自为之。
江山易改,秉性难移。如果一个人迷恋上了非正常的事情,那么,是很难很难改变的。玩物丧志,股票就像赌博一样,真正能发财的是不多的。而他沉迷其中,是不会轻易放手的。所...
放弃吧朋友,她不爱你,别为她费神了,真得,她只是当你是朋友
看事情大小轻重,看说的是什么话。小事一件的话信也可不信也可没有什么损失,事情大、事情重要的时候千万谨慎。个人建议还是要保留几分,任何时候不轻易相信别人的话为好,...
这样的人色味太重,赶紧远离就是了。
现在的选择权在你女朋友手里,你只要等就好了.
但是要让她知道你是在乎她的.
至于她选择谁,不一定你长的帅就会选你的,帅的给女人的感觉的确是不可靠的.
和陌生人第一天很热情,这可能是她的交际方式。以后谈话变的冷淡可能不让对方产生误会吧。
答: 这个剧情应该是在第十集27分钟左右闻到咖啡就想起你 这句话是14集44:30
答: 女人都想喜欢想东想西的。烦恼自然也多。
能来求助,就说明你有自我改变的动机!你爱他,是你的事!他爱不爱你是他的事,既然没有要求,为什么如此痛苦呢?我不是咨询,但可以和我说说?如果不愿意和我说,也...
答: 每个人在成长的过程中都会有烦恼的,如何正确对待它们才是需要考虑的首要问题.
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区您所在的位置: >>
>> 第二章 购物及网络骗术:再精也能骗到你
为这个书签标记颜色吧
1.别以为货到付款就安全了
  “商品送货上门,货到付款,品质有保障!”如果你看到这样的购物广告,就以为可以放心无忧地购物的话,那你就错了。现在,很多骗子都好玩这一手。虽然等货到了才付款,但是,只有你付款后才能验货。而等你验完货发现是山寨货,再想要钱的时候,那可就没那么容易了。
张先生就是被“货到付款”的骗子给忽悠了几千块钱。
  张先生看到某电视购物里的一款名为“Konkame”的手机,骗子在广告里介绍这款手机是 “双卡双待,可视频通话,待机10多天,机身镀金,只要1698,赶快行动……”张先生一时冲动,就拨打了电视屏幕下方的电话。电话里导购小姐说两部手机只要1698元,货到付款。张先生在打完电话后就下了订单。
  几天后,张先生收到了邮局送上门来的快递。为了安全起见,张先生要先打开包裹验货,但是却遭到邮递员拒绝。邮递员说,你必须先签字交货款,才能拿到包裹。“货到付款”其实是“先付款才能开包查看货物”。
  无奈的张先生只得交了钱才打开包裹,但是,却发现里面的手机只是一部杂牌的“山寨机”,根本没有宣传中的视频通话、卫星定位等功能。于是,他马上向送货的邮递员反映,对方说他们只管运送包裹,如产品有问题,需与售货方联系。
  正在郁闷的时候,张先生又接到了手机厂家“售后中心”主动打来的电话。张先生将收到的手机无视频、无定位功能的情况一说,对方告诉他是物流发错货了。并称张先生原来购买的手机断货了,现在会再补发两部价值3680元的网络版新型视频手机,还说现在这种机型搞优惠,张先生只要在原来购买的基础上再加1000元钱就可以得到了。
  “已收到的这两部手机怎么办呢?”张先生不好意思地咨询对方,得到的回答是,在将要补发的包裹里会有一张全国联保的发票、售后联保电话表、车载充电座、福娃充值卡、蓝牙耳机、1G内存卡,还有100元钱,这100元钱是给张先生补偿的邮寄费,让张先生将已经收到的两部手机寄回来时使用。
  为了让张先生百分之百相信,对方还千叮咛万嘱咐地告诉张先生,收到包裹后一定要把之前寄错的手机给他寄回去,不然他很难向公司交代。过了没几天,张先生再次收到邮递员送来的包裹。给邮递员1000元货款后,他打开包裹一看,里面竟是部假手机。
  “这个手机是假货,根本没法用。”张先生再次上当受骗,却投诉无门。之后,仍有电话打过来说,要再次给张先生调换功能强大的光充电手机。
  无独有偶,海南的卢先生也因轻信“货到付款”而先后被骗了4000多元。卢先生通过电视购物花了998元买了一部OBIE牌手机。他回到海口,却接到一位自称是该手机生产公司的王女士的电话,王女士表示,这台手机性能不好,可以给卢先生换一部更好的,只需1480元,货到付款,公司会派人到海口退还他998元。卢先生没多想,表示可以接受。
几天后,手机寄到,卢先生感觉有点不对劲,换过的手机也不好用,拿到市场上一打听,顶多也就值几百元,该公司也一直未退还他原先寄去的998元。他刚想讨说法,自称是该公司上级监管单位的严先生主动给他打来电话,表示第二部手机也有质量问题,可以换一部诺基亚N95正品给他,但需再加1520元,也是货到付款。
卢先生说,他当时表示过怀疑,但对方报出了他的货单号,自己也不想让之前寄去的钱打了水漂,便同意了。
几天后,他到邮局领包裹,拆开一看当场傻了眼,包裹里的那部诺基亚N95手机竟然是模型!骗子还很有幽默感,居然一起邮来一条女式内裤。
卢先生赶紧给王女士和严先生打电话,果然不出所料,要么不通,要么不接。
【骗术揭秘】
  骗子先是在电视、网络上打广告,将产品吹得天花乱坠,并表明货到付款,引人上当。一旦你订购了,就会给你发去与宣传内容明显不符的产品,甚至是假货。利用货到付款的漏洞,让送货人员先收到货款再给你货物,你即使发现货物不对也无法退货。利用你的心理,以售后为名,打着更换新产品的幌子,再次引你入套。包裹上不标明退货地址,你即使想退货也无处可退。事后不是拖延,就是玩失踪。因你只有个电话,连骗子的地址都弄不清楚,投诉无门,只能自吞苦果。
【骗子自白】
  首先要感谢发明这种骗术的“骗祖”,是他们让我们走上了致富奔小康的路。其实,现在的人还是特别爱占小便宜,并且,我相信爱占小便宜的恶习会陪伴我们中国人数百年数千年。我们往往把很次的商品吹得天花乱坠,然后,再以极低的价格诱惑他们,再以货到付款的方式打消他们的心理防御,然后,就能让他们进入我们设下的圈套。一步一步地让他们把钱乖乖地给我们打过来。
【灰常点评】
  从这个骗局让我了解?,我们的邮政部门似乎有助纣为虐的嫌疑。
为这个书签标记颜色吧
小贴士:键盘左右键(← →)可以上下翻页,按回车(ENTER)可返回该作品目录。鼠标双击滚屏
数据载入中 ...
您可以复制下面的内容,通过MSN或者QQ发送给朋友。
一起来阅读《我不是教你骗》吧!作者:安坤
书籍简介:将骗子整蛊到“死”!中国最雷人的社科书!《我不是教你骗》教你玩一把可恶的骗子!
人在社会漂,哪儿能不遇骗子!所以,本书不仅适合大中学生,还适合白领、蓝领、黑领、花领,以及60岁的老人~
被网友赞誉为“超级白金裤衩级主编”的《别笑,我是高考零分作文》系列主编安坤再度出手,全面、详细地列数和揭秘时下“当红”的所有骗术,教你怎样拒绝上当,怎样玩一把可恶的骗子。
《我不是教你骗》责编感慨:“如果中国人手一本,骗子就得下岗再就业了。”
当当网免费试读此书地址:http://read.dangdang.com/book_10003?ref=read-7-share迪迪好贷我不是很了解,有没有可以告诉我,靠不靠谱啊这个?_百度知道
迪迪好贷我不是很了解,有没有可以告诉我,靠不靠谱啊这个?
我有更好的答案
身边有人申请,靠不靠谱要你自己去考量,你先得看看自己符不符合资质
采纳率:17%
还不如找私人贷款
为您推荐:
其他类似问题
不靠谱的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。51CTO旗下网站
你必须了解的Session的本质
有一点我们必须承认,大多数web应用程序都离不开session的使用。这篇文章将会结合php以及http协议来分析如何建立一个安全的会话管理机制。
作者:Panni_007编译来源:FreebuF| 10:13
有一点我们必须承认,大多数web应用程序都离不开session的使用。这篇文章将会结合php以及http协议来分析如何建立一个安全的会话管理机制。我们先简单的了解一些http的知识,从而理解该协议的无状态特性。然后,学习一些关于cookie的基本操作。最后,我会一步步阐述如何使用一些简单,高效的方法来提高你的php应用程序的安全性以及稳定行。
我想大多数的php初级程序员一定会认为php默认的session机制的安全性似乎是有一定保障的,事实恰好相反 &
php团队只是提供了一套便捷的session的解决方案提供给程序员使用,至于安全性的话,应该由程序员来加强,这是应用程序开发团队的责任。因为,这里面的方法很多,可以这么说吧,没有最好,只有更好。攻击的方式在不断变化,防守方也需要不断变招,所以,我个人认为php团队的做法还是比较明智的。
Http是一种无状态性的协议。这是因为此种协议不要求浏览器在每次请求中标明它自己的身份,并且浏览器以及服务器之间并没有保持一个持久性的连接用于多个页面之间的访问。当一个用户访问一个站点的时候,用户的浏览器发送一个http请求到服务器,服务器返回给浏览器一个http响应。其实很简单的一个概念,客户端一个请求,服务器端一个回复,这就是整个基于http协议的通讯过程。
因为web应用程序是基于http协议进行通讯的,而我们已经讲过了http是无状态的,这就增加了维护web应用程序状态的难度,
对于开发者来说,是一个不小的挑战。Cookies是作为http的一个扩展诞生的,其主要用途是弥补http的无状态特性,提供了一种保持客户端与服务器端之间状态的途径,但是由于出于安全性的考虑,有的用户在浏览器中是禁止掉cookie的。这种情况下,状态信息只能通过url中的参数来传递到服务器端,不过这种方式的安全性很差。事实上,按照通常的想法,应该有客户端来表明自己的身份,从而和服务器之间维持一种状态,但是出于安全性方面的考虑,我们都应该明白一点
& 来自客户端的信息都是不能完全信任的。
尽管这样,针对维持web应用程序状态的问题,相对来说,还是有比较优雅的解决方案的。不过,应该说是没有完美的解决方案的,再好的解决方案也不可能适用所有的情况。这篇文章将介绍一些技术。这些技术可以用来比较稳定地维持应用程序的状态以及抵御一些针对session的攻击,比如会话劫持。并且你可以学习到cookie是怎样工作的,php
的session做了那些事情,以及怎样才能劫持session。
如何才能保持web应用程序的状态以及选择最合适的解决方案呢?在回答这个问题之前,必须得先了解web的底层协议 & Hypertext Transfer
Protocol (HTTP)。
当用户访问http://example.com这个域名的时候,浏览器就会自动和服务器建立tcp/ip连接,然后发送http请求到example.com的服务器的80端口。该个请求的语法如下所示:
GET / HTTP/1.1
Host: example.org
以上第一行叫做请求行,第二个参数(一个反斜线在这个例子中)表示所请求资源的路径。反斜线代表了根目录;服务器会转换这个根目录为服务器文件系统中的一个具体目录。
Apache的用户常用DocumentRoot这个命令来设置这个文档根路径。如果请求的url是http://example.org/path/to/script.php,那么请求的路径就是/path/to/script.php。假如document
被定义为usr/lcoal/apache/htdocs的话,整个请求的资源路径就是/usr/local/apache/htdocs/path/to/script.php。
第二行描述的是http头部的语法。在这个例子中的头部是Host,
它标识了浏览器希望获取资源的域名主机。还有很多其它的请求头部可以包含在http请求中,比如user-Agent头部,在php可以通过$_SERVER['HTTP_USER_AGENT']获取请求中所携带的这个头部信息。
但是遗憾的是,在这个请求例子中,没有任何信息可以唯一标识当前这个发出请求的客户端。有些开发者借助请求中的ip头部来唯一标识发出此次请求的客户端,但是这种方式存在很多问题。因为,有些用户是通过代理来访问的,比如用户A通过代理B连接网站www.example.com,
服务器端获取的ip信息是代理B分配给A的ip地址,如果用户这时断开代理,然后再次连接代理的话,它的代理ip地址又再次改变,也就说一个用户对应了多个ip地址,这种情况下,服务器端根据ip地址来标识用户的话,会认为请求是来自不同的用户,事实上是同一个用户。
还用另外一种情况就是,比如很多用户是在同一个局域网里通过路由连接互联网,然后都访问www.example.com的话,由于这些用户共享同一个外网ip地址,这会导致服务器认为这些用户是同一个用户发出的请求,因为他们是来自同一个ip地址的访问。
保持应用程序状态的第一步就是要知道如何来唯一地标识每个客户端。因为只有在http中请求中携带的信息才能用来标识客户端,所以在请求中必须包含某种可以用来标识客户端唯一身份的信息。Cookie设计出来就是用来解决这一问题的。
如果你把Cookies看成为http协议的一个扩展的话,理解起来就容易的多了,其实本质上cookies就是http的一个扩展。有两个http头部是专门负责设置以及发送cookie的,它们分别是Set-Cookie以及Cookie。当服务器返回给客户端一个http响应信息时,其中如果包含Set-Cookie这个头部时,意思就是指示客户端建立一个cookie,并且在后续的http请求中自动发送这个cookie到服务器端,直到这个cookie过期。如果cookie的生存时间是整个会话期间的话,那么浏览器会将cookie保存在内存中,浏览器关闭时就会自动清除这个cookie。另外一种情况就是保存在客户端的硬盘中,浏览器关闭的话,该cookie也不会被清除,下次打开浏览器访问对应网站时,这个cookie就会自动再次发送到服务器端。一个cookie的设置以及发送过程分为以下四步:
客户端发送一个http请求到服务器端
服务器端发送一个http响应到客户端,其中包含Set-Cookie头部
客户端发送一个http请求到服务器端,其中包含Cookie头部
服务器端发送一个http响应到客户端
这个通讯过程也可以用以下下示意图来描述:
在客户端的第二次请求中包含的Cookie头部中,提供给了服务器端可以用来唯一标识客户端身份的信息。这时,服务器端也就可以判断客户端是否启用了cookies。尽管,用户可能在和应用程序交互的过程中突然禁用cookies的使用,但是,这个情况基本是不太可能发生的,所以可以不加以考虑,这在实践中也被证明是对的。
GET and POST Data
除了cookies,客户端还可以将发送给服务器的数据包含在请求的url中,比如请求的参数或者请求的路径中。 我们来看一个例子:
GET /index.php?foo=bar HTTP/1.1
Host: example.org
以上就是一个常规的http get 请求,该get请求发送到example.org域名对应的web 服务器下的index.php脚本,
在index.php脚本中,可以通过$_GET['foo']来获取对应的url中foo参数的值,也就是&bar&。大多数php开发者都称这样的数据会GET数据,也有少数称它为查询数据或者url变量。但是大家需要注意一点,不是说GET数据就只能包含在HTTP
GET类型的请求中,在HTTP
POST类型的请求中同样可以包含GET数据,只要将相关GET数据包含在请求的url中即可,也就是说GET数据的传递不依赖与具体请求的类型。
另外一种客户端传递数据到服务器端的方式是将数据包含在http请求的内容区域内。 这种方式需要请求的类型是POST的,看下面一个例子:
POST /index.php HTTP/1.1
Host: example.org
Content-Type: application/x-www-form-urlencoded
Content-Length: 7
在这种情况下,在脚本index.php可以通过调用$_POST['foo']来获取对应的值bar。开发者称这个数据为POST数据,也就是大家熟知的form以post方式提交请求的方式。
在一个请求中,可以同时包含这两种形式的数据:
POST /index.php?myget=foo HTTP/1.1
Host: example.orgContent-Type: application/x-www-form-urlencoded
Content-Length: 11
mypost=bar
这两种传递数据的方式,比起用cookies来传递数据更稳定,因为cookie可能被禁用,但是以GET以及POST方式传递数据时,不存在这种情况。我们可以将PHPSESSID包含在http请求的url中,就像下面的例子一样:
GET /index.php?PHPSESSID=12345 HTTP/1.1
Host: example.org
以这种方式传递session id的话,可以跟用cookie头部传递session id一样,达到同样的效果,
但是,缺点就是需要开发者认为地将session
id附加在url中或者作为隐藏字段加入到表单中。不像cookie一样,只要服务器端指示客户端创建cookie成功以后,客户端在后续的请求中,会自动第将对应的没有过期的cookie传递给服务器端。当然,php在开启session.use_trans_sid后,也可以自动地将session
id 附加在url中以及表单的隐藏字段中,但是这个选项不建议开启,因为存在安全问题。这样的话,容易泄露session id,
比如有的用户会bookmark一个url或者分享一个url,那么session id也就暴露了,加入这个session
id还没有过期,那是有一定的安全问题存在的,除非服务器端,除了session id外,还附加了其它方式进行验证用户的合法性!
尽管以POST的方式来传递session
id的话,相对GET的方式来说,会安全的多。但是,这种方式的缺点就是比较麻烦,因为这样的话,在你的应用程序中比较将所有的请求都转换成post的请求,这显然是不太合适的。
Session的管理
直到现在,我只讨论了如何维护应用程序的状态,只是简单地涉及到了如果保持请求之间的关系。接下来,我阐述下在实际中用到比较多的技术 &
Session的管理。涉及到session的管理,就不是单单地维持各个请求之间的状态,还需要维持会话期间针对每个特定用户使用到的数据。我们常常把这种数据叫做session数据,因为这些数据是跟某个特定用户与服务器之间的会话相关联的。如果你使用php内置的session的管理机制,那么session数据一般是保存在/tmp这个服务器端的文件夹中,并且其中的session数据会被自动地保存到超级数组$_SESSION中。一个最简单的使用session的例子,就是将相关的session数据从一个页面传递(注意:实际传递的是session
id)到另一个页面。下面用示例代码1, start.php, 对这个例子加以演示:
&?php&session_start();&$_SESSION['foo']&=&'bar';&?&&&a&href=&continue.php&&continue.php&/a&&
假如用户点击start.php中的链接访问continue.php,那么在continue.php中就可以通过$_SESSION['foo']获取在start.php中的定义的值&bar&。看下面的示例代码2:
示例代码2 & continue.php
&?php&session_start();&echo&$_SESSION['foo'];&&?&&
是不是非常简单,但是我要指出的话,如果你真的这样来写代码的话,说明你对php底层的对于session的实现机制还不是非常了解透彻。在不了解php内部给你自动做了多少事情的情况下,你会发现如果程序出错的话,这样的代码将变的很难调试,事实上,这样的代码也完全没有安全性可言。
Session的安全性问题
一直以来很多开发者都认为php内置的session管理机制是具有一定的安全性,可以对一般的session攻击起到防御。事实上,这是一种误解,php团队只实现了一种方便有效的机制。具体的安全措施,应该有应用程序的开发团队来实施。
就像开篇谈到的,没有最好的解决方案,只有最合适你的方案。
现在,我们来看下一个比较常规的针对session的攻击:
用户访问http://www.example.org,并且登录。
example.org的服务器设置指示客户端设置相关cookie & PHPSESSID=12345
攻击者这时访问http://www.example.org/,并且在请求中携带了对应的cookie & PHPSESSID=12345
这样情况下,因为example.orge的服务器通过PHPSESSID来辨认对应的用户的,所以服务器错把攻击者当成了合法的用户。
整个过程的描述,请看下面的示例图:
当然这种攻击的方式,前提条件是攻击者必须通过某种手段固定,劫持或者猜测出某个合法用户的PHPSESSID。虽然这看起来难度很高,但是也不是不可能的事情。
安全性的加强
有很多技术可以用来加强Session的安全性,主要思想就是要使验证的过程对于合法用户来说,越简单越好,然后对于攻击者来说,步骤要越复杂越好。当然,这似乎是比较难于平衡的,要根据你应用程序的具体设计来做决策。
最简单的居于HTTP/1.1请求包括请求行以及一些Host的头部:
GET / HTTP/1.1
Host: example.org
如果客户端通过PHPSESSID传递相关的session标识符,可以将PHPSESSID放在cookie头部中进行传递:
GET / HTTP/1.1
Host: example.org
Cookie: PHPSESSID=12345
同样地,客户端也可以将session标识符放在请求的url中进行传递。
GET /?PHPSESSID=12345
HTTP/1.1Host: example.org
当然,session标识符也可以包含在POST数据中,但是这对用户体验有影响,所以这种方式很少采用。
因为来自TCP/IP信息也不一定可以完全信任的,所以,对于web开发者来说,利用TCP/IP中的信息来加强安全性也是不太合适的。
不过,攻击者也必须提供一个合法用户的唯一的标识符,才能假扮成合法用户进入系统。因此,看起来唯一能够有效的保护系统的措施,就是尽量地隐藏session标识符或者使之难于猜测出来。最好就是两者都能实施。
PHP会自动生成一个随机的session
ID,基本来说是不可能被猜测出来的,所以这方面的安全还是有一定保障的。但是,要防止攻击者获取一个合法的session
ID是相当困难的,这基本上不是开发者所能控制的。
事实上,许多情况下都有可能导致session ID的泄露。 比如说,如果通过GET数据来传递session
ID的话,就有可能暴露这个敏感的身份信息。因为,有的用户可能会将带有session
ID的链接缓存,收藏或者发送在邮件内容中。Cookies是一种像相对来说安全一点的机制,但是用户是可以在客户端中禁止掉cookies的!在一些IE的版本中也有比较严重的安全漏洞,比较有名的就是会泄露cookies给一些有安全隐患的邪恶站点。
因此,作为一个开发者,可以肯定session
ID是不能被猜测出来的,但是还是有可能被攻击者使用某些方法获取到。所以,必须采取一些额外的安全措施来防止此类情况在你的应用程序中发生。
实际上,一个标准的HTTP请求中除了Host等必须包含的头部,还包含了一些可选的头部.举一个例子,看下面的一个请求:
GET / HTTP/1.1
Host: example.org
Cookie: PHPSESSID=12345
User-Agent: Mozilla/5.0 (M U; Intel Mac OS X; en-US; rv:1.8.1.1)
Gecko/ Firefox/2.0.0.1
Accept: text/q=0.9, */*;q=0.1
Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66
Accept-Language: en
我们可以看到,在以上的一个请求例子中包含了四个额外的头部,分别是User-Agent, Accept,
Accept-Charset以及Accept-Language。因为这些头部不是必须的,所以完全依赖他们在你的应用程序中发挥作用是不太明智的。但是,如果一个用户的浏览器确实发送了这些头部到服务器,那么可以肯定的是在接下来的同一个用户通过同一个浏览器发送的请求中,必然也会携带这些头部。当然,这其中也会有极少数的特殊情况发生。假如以上例子是由一个当前的跟服务器建立了会话的用户发出的请求,考虑下面的一个请求:
GET / HTTP/1.1
Host: example.org
Cookie: PHPSESSID=12345
User-Agent: Mozilla/5.0
因为有相同的session id包含在请求的Cookie头部中,所以相同的php
session将会被访问到。但是,请求里的User-Agent头部跟先前的请求中的信息是不同的,系统是否可以假定这两个请求是同一个用户发出的?
像这种情况下,发现浏览器的头部改变了,但是不能肯定这是否是一次来自攻击者的请求的话,比较好的措施就是弹出一个要求输入密码的输入框让用户输入,这样的话,对用户体验的影响不会很大,又能很有效地防止攻击。
当然,你可以在系统中加入核查User-Agent头部的代码,类似示例3中的代码:
&?php&&session_start();&&if&(md5($_SERVER['HTTP_USER_AGENT'])&!=&$_SESSION['HTTP_USER_AGENT'])&&{&&&&exit;&}&&?&&
当然,你先必须在第一次请求时,初始化session的时候,用MD5算法加密user
agent信息并且保存在session中,类似下面示例4中的代码:
&?php&&session_start();&&$_SESSION['HTTP_USER_AGENT']&=&md5($_SERVER['HTTP_USER_AGENT']);&&?&&
虽然不一定需要用MD5来加密这个User-Agent信息,但使用这种方式以后就不需要再过滤这个$_SERVER['HTTP_USER_AGENT']数据了。不然的话,在使用这个数据以前必须要进行数据过滤,因为任何来自客户端的数据都是不可信任的,必须要注意这一点。
在你检查这个User-Agent客户端头部信息以后,做为一个攻击者必须要完成两步才能劫持一个session:
获取一个合法的session id
包含一个相同的User-Agent头部在伪造的请求中
你可能会说,居然攻击者能获得有效的session
id,那么以他的水平,伪造一个相同的User-Agent不是件难事。不错,但是我们可以说这至少给他添加了一些麻烦,在一定程度上也增加了session机制的安全性。
你应该也能想到了,既然我们可以检查User-Agent这个头部来加强安全性,那么不妨再利用其它的一些头部信息,把他们组合起来生成一个加密的token,并且让客户端在后续的请求中携带这个token!这样的话,攻击者基本上不可能猜测出这样一个token是怎么生成出来的。这好比你用信用卡在超市付款,一个你必须有信用卡(好比session
id),另外你也必须输入一个支付密码(好比token),这有这两者都符合的情况下,你才能成功进入账号付款。 看下面一段代码:
&?php&&session_start();&&$token&=&'SHIFLETT'&.&$_SERVER['HTTP_USER_AGENT'];&$_SESSION['token']&=&md5($token&.&session_id());&&?&&注意:Accept这个头部不应该被用来生成token,因为有些浏览器会自动改变这个头部,当用户刷新浏览器的时候。&
在你的验证机制中加入了这个非常难于猜测出来的token以后,安全性会得到很大的提升。假如这个token通过像session
id一样的方式来进行传递,这种情况下,一个攻击者必须完成必要的3步来劫持用户的session:
获取一个合法的session ID
在请求中加入相同的User-Agent头部,用与生成token
在请求中携带被攻击者的token
这里面有个问题。如果session id以及token都是通过GET数据来传递的话,那么对于能获取session
ID的攻击者,同样就能够获取到这个token。所以,比较安全靠谱的方式应该是利用两种不同的数据传递方式来分别传递session
id以及token。例如,通过cookie来传递session
id,然后通过GET数据来传递token。因此,假如攻击者通过某种手段获得了这个唯一的用户身份标识,也是不太可能同时轻松地获取到这个token,它相对来说依然是安全的。
还有很多的技术手段可以用来加强你的session机制的安全性。希望你在大致了解session的内部本质以后,可以设计出适合你的应用系统的验证机制,从而大大的提高系统的安全性。毕竟,你是最熟悉当下你开发的系统的开发者之一,可以根据实际情况来实施一些特有的,额外的安全措施。
以上只是大概地描述了session的工作机制,以及简单地阐述了一些安全措施。但要记住,以上的方法都是能够加强安全性,不是说能够完全保护你的系统,希望读者自己再去调研相关内容。在这个调研过程中,相信你会学到很有实际使用价值的方案。
原文地址:http://shiflett.org/articles/the-truth-about-sessions【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条头条热点热点
24H热文一周话题本月最赞
讲师:5166人学习过
讲师:3998人学习过
讲师:70838人学习过
精选博文论坛热帖下载排行
本书描述了Solaris 10和OpenSolaris内核中所有主要子系统的算法和数据结构,对第1版进行了大幅修订,加入了很多新的内容。全书从头到尾都采...
订阅51CTO邮刊}

我要回帖

更多关于 红人环境能量可信吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信