nweb:一个微型、安全的web服务器(仅支持静态页面)(下)

浏览器和web服务器之间使用的协议

关于协议的完整细节,请参考万维网联盟【注1】。

浏览器发送:GET URL,很多其它信息能够被忽略,但是某些浏览器或应用程序可能检查浏览器的类型、操作系统等等。

例子: GET /index.html

例子: GET /mydirector/mypicture.jpg

“/“指web服务器支持文件的顶级目录——这是一个目录,在你启动nweb时,可以作为第二个参数。web服务器应该从来不会发送目录之外的任何文件。一些web服务器允许指定其它目录作为指定的文件类型,比如CGI脚本,但是nweb不会处理这种昂贵的服务。

Mozilla 火狐V10浏览器向nweb发起一个请求,代码如下:

> > GET /index.html...

nweb:一个微型、安全的web服务器(仅支持静态页面)(上)

你曾经想知道一个web服务器究竟是如何运行的吗?体验一下nweb—一个只有200行C源代码的简单web服务器。本文,Nigel Griffiths提供了该服务器的一份拷贝,也包括了源代码。你完全可以看到它能够、和不能够做什么。

简介

你曾经想运行一个微型的、安全的web服务器吗?不用为使用一个完全膨胀的、安装和配置都很复杂的web服务器而担忧。你想知道如何写一个带有网络套接字的接收进来的消息的程序吗?你曾经只想要用来实验和学习的、你自己的web服务器吗?2012年的进一步更新支持了最近的web服务器、浏览器标准和代码刷新。

好吧,不必再期待了—nweb就是你需要的。这是一个只有200行C源代码的web服务器。它面向普通用户,不能运行任何服务器端脚本或程序,因此它不能开通任何特殊权限或安全漏洞。

本文包括:

为什么我们停止使用Twitter的单点登录

它真正简化了登录,但是为什么我们在Buffer的iPhone版拒绝用户使用Twitter的单点登录。

我们一直在Buffer的iPhone版使用Twitter iOS里的原生身份验证选项。直到去年我们出现了一次安全漏洞。

问题

Twitter SSO(单点登录)允许我们让用户登录到app,由于我们需要访问token来让Buffer张贴信息,甚至在app没有运行的时候,我们也不得不实现反向身份验证。这需要在app bundle包含Buffer的OAuth细节。

因此当我们去年遭遇安全漏洞的时候,我们快速地重设了Twitter应用程序的OAuth细节,这意味着iPhone app上的细节变成不合法了。app里的Twitter身份验证的SSO对任何人都不起作用了,并不是说对于新用户或现存用户的最大体验。

我们快速修改了app,让Twitter身份证验证恢复正常,并向app商店申请快速review正确的OAuth细节。幸运的是,苹果出乎意料地接受了我们的快速review请求,一切回到正轨。

将来怎么避免类似情况

不管什么原因我们未来都想消除类似现象再次发生的可能性。因此我们花时间使用SSO的方式、而没有用到现在需要的key/secret。

试了大量的可能解决方案,我们现在去掉了面向Twitter的SSO,尝试了大量方法在其它地方使用反向身份验证来获取访问token,但一无所获。

我们现在通过Buffer API来使用OAuth。我们可以在任何需要的时候去修改key/secret,而不必发布新的app,这意味着我们不会再次遇到Twitter身份验证被完全破坏的情况了。

现在我们把同样的解决方案用在了下次更新iPhone版的其它网络。对于Facebook唯一不同的是,我们使用它们的iOS SDK和SSO选项,因为我们不必包含key/secret。把这种方案应用到其它网络意味着具有相同的体验,我们没有在身份验证的混合模式选择’n’。

...