由一本书而想到的。。。。

书名:CDN技术详解,里面关于http协议,集群,负载均衡等问题有了系统的讲解。


从图书馆借的。最近正好在做一个负载相关的东西,就翻了一下。本想推荐给大家,但看了下豆瓣上的评论,好像不太好,没有讲出CDN的精华,就不做推荐了。


本来我是为了负载均衡才看这本书的,之所以能读完(其实也就读了80%吧),是因为里面关于http报头,正向代理反向代理这几年用到过或看到过,当时不太理解,看完之后理解的深了,有种豁然开朗的感觉,故觉得书还不错,其实恰好比较适合自己罢了。而豆瓣上评论的人之所以都给差评,是因为他们是冲着CDN去的,结果发现杂七杂八讲了许多,CDN没说出什么来,心理期望没有满足,故而给出差评。


从这件事情上,我认识到:

1、平常的知识获取的比较零碎,一定要定期总结。最好找本相关书籍,帮助自己总结,省时省力。

2、一本书的好坏,总有人站在不同的立场上,但只要你有所收获,就值得一看。

3、看书一定要快,三天内看完一遍,再决定是否自己钻研,否则永远也看不完,至少我会这样。

4、对于我个人来说,我还是更能看进纸质书。这个缺点一定要克服,因为相比纸质书,电子书更容易获得。


书里面值得记住的细节:

1、cdn加速可以分为网页加速、流媒体加速、文件传输加速、应用协议加速(SSL加速等)等。

2、正向代理、反向代理、透明代理的含义。squid nginx在代理上的应用等。

3、HTTP协议的工作原理,cookie和session的区别和联系等。

4、https原理,http缓存的细节等。

5、会话持续性保证,L4/L7负载均衡技术

6、流媒体的负载均衡与协议有关,提出了一些特殊的要求。解决方式有很多,例如分片,缓存特殊处理(PUsh)等。

7、动态内容加速需要特别对待。SSL加速也需要特别对待。

8、此书还讲了P2P衰落的原因。



这本书没有电子版。所以以上的记录主要是知识点的记录。可以查询相关网页来帮助回忆。

所以以后对待问题一定要知其所以然。系统的组织知识。如果自己无法做到系统,就看书吧。

阅读更多

由网站验证码而想到的……。

06-15

网站验证码的作用是防止暴力破解用户名密码或用机器人灌水。rn主流的写法都是在服务器生成一个随机串,然后将随机数生成图片,发至客户端,然后再将随机数加密用Cookies传到客户端。rn在用户提交回来的信息中检查用户输入数的加密值是否与Cookies中的值相同来验证的。rnrn不过我发现这种写法有相当大的漏洞。其结果是即麻烦了客户而又没有达到目地。rn因为:rn客户端可以重复发送一个相同的post/cookies验证串来达到目地。rnrn举个例子,rn第一步,正常访问rn可以得到一个验证码和一个存在cookies中的验证串。rn第二步,将二个值放入暴破/灌水机器人中。rn这样,机器人就可以每次请求都使用这对正确的值。而验证码系统将失效。rnrn为什么会出现这种情况呢?rn一、因为Web的任意二次请求/响应没有必要的因果关系。所以即使请求需要凭证也无法验证凭证是何时发布的,是发给哪个客户端的。(实际上,这会引起更大的问题,我会在后面讲到)rnrn二、凭证与校验两个值同是发送至各户端;这样就给了客户端伪造的机会。客户端不需要知道凭证与校验之间的转换算法。只需拥有一对正确的凭证/校验数据就够了。rnrn以上二点是所有网络应用都应当注意的问题,可见,如果要相使你的验证码有效,就必须将校验串留在服务器端,而向客户端发送凭证和一个校验串的编号,凭证/校验串使用一次后立即过期。不过随之而来的是你要如何保存校验串和校验串编号。用内存?用数据库?开销都是不小的。rnrnrn然后我们再来看我说的第一点问题。如果你认为验证码的问题你可以忍受的话,那么我下面要说的可能会让你精心构建的网站安全系统有一种崩溃的意像。rn我们都知道HTTP是一种非加密协议,所有HTTP的请求/响应都是在TCP通路上飞速“裸奔”。很早以前就出现过截取Web密码的软件,那时的网络大多基于HUB或是总线网络使得只要在网内的一台机器上使用截取软件就可以得到整个网络内所有的Web密码。而现在大多数网络基于交换机,这种方法显然失去了一部份市场。rn有点跑题,回到我们的问题上来,我们知道ASP/ASP.NET和其它的WEB服务器技术的Session都是依据cookies换句话来说,现在所有Web技术的服务器验证都是将凭据发送到客户机这就出现了我刚才所讲的第二个问题:“凭证可以伪造”!掌握了相应SessionID就得到了服务器权限。rn不过还好,SessionID的值都是随机的并且很长。不太可能被人猜解到,不过不要大意。如果你好心的为了方便你的访客访问你的网站而将其的Id/Key加密后放入cookies后那么问题就出现了。在客户机上是很容易得到访客的Id/Key所计算出的“凭证”的。这样即使不知道具体的密码,也可以在其它地点以这个用户登陆。而且这几个访问的SessionID和Id/Key完全相同,这会出现什么样的后果?你的网站的操作日志完全失效!因为所有的访问凭证都是相同的。你没办法区别哪些请求是真正访客的,哪些请求是攻击者的!rnrn综上所述我总结了以下几点:rn一、需要权限的访问一定需要凭证,而凭证一定需要校验。rn二、校验一定需要保存在服务器上。并且,凭证与校验必须是一次性的。使用后立即过期。rn三、不要相信任何客户端发来的结果,它们都可能是假的!rn四、不要在cookies中长期保存任何凭证。它们只会增加风险。rn五、如果你使用的是Asp/Asp.net请不要在网页上体现访客的SessionID。它们会造成伪造的机会。如果你使用的是其它技术,也一样。rn六、对于需要高度安全的访问验证,请劝告你们的访客,不要在局域网内或使用不安全的代理访问你的网站。rnrn一家之言仅供参考。

换一批

没有更多推荐了,返回首页