Sheppard Y

keep thinking keep coding.

http与socket验证的区别

2016-07-11 日更新 
此篇博客已经迁移到新博客,并做行文检查和优化排版:
http://blog.clawz.me/2014/01/10/14-http-socket-auth-diff/



    这是很基础的概念,之前没怎么弄过http。对于自己,算是做个笔记吧。


一、socket安全验证

    socket链接是握手之后就一直连着,所以这条链接在第一包验证之后,之后这条链接不需要再验证。“第一个包”可能描述不准确,因为有时候第一包不一定就验证,可能是做路由之类。这里就不管这种情况了,只管第一个包直接验证的情况。

    可以理解为server接受到client的链接,并且验证通过(如用户及密码对了)这个client链接后。以后这个client发过来的包,server都直接做逻辑处理而不再需要做验证链接合法性。这个信任是直到链接断开的。

    如果非法客户端来模拟登陆,至少需要得到有效的id及密码,这已经是密码自身安全的事情,不涉及这里谈的链接安全性。

    如果非法客户端用正确的id及密码登陆后,发些非法包,这里的包验证应该是服务器上包处理时的包检查及逻辑检查的事,就是通常的游戏说的防刷(包频率、包里数据的合法范围等)。


二、http的安全验证

    这里只关心http的短连接。

    短连接就是每次建立链接-发包-断开。同一client的前后两次发到server的包,也相当于独立的两次,同一client的验证就需要每个http请求都要验证下。于是有了session和cookie。cookie是将client的标识放在client端,常用于server没有账户密码验证的方式。这里不讨论cookie。

    server在第一个http请求验证client后,给他分配一个session。这个session简单的可以理解为server和client约定的一个client凭证(有有效期)。之后client在每个请求里加上这个session里规定的值,例如一个合适长度的随机字符串。

    这里的session不能有让恶意用户很容易破解的规律,例如用户的id之类的。所以上边提到随机字符串之类的。    

posted on 2014-01-10 13:53 Sheppard Y 阅读(1757) 评论(0)  编辑 收藏 引用 所属分类: 网络编程


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2013年10月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

留言簿(1)

随笔分类(77)

随笔档案(58)

me

基友

同行

业界前辈

最新随笔

搜索

积分与排名

最新评论

阅读排行榜