HTTP Header 裡的 Location 使用相對路徑...

HTTP Response Header 的 Location (俗稱「轉址」) 被用在不少地方,剛好今天被 ccn 戳到相關的問題...

在維基百科的「HTTP location」條目裡面有說明 HTTP/1.1 的規範裡要求必須是 absolute URI:

Location       = "Location" ":" absoluteURI

但實務上,目前市場上常見的瀏覽器都支援相對路徑。而且在 HTTP/1.1 修正版 (目前還在 draft) 裡被修正成:

Location = URI-reference

並且說明 relative 時的判定方式:

The field value consists of a single URI-reference. When it has theform of a relative reference ([RFC3986], Section 4.2), the final value is computed by resolving it against the effective request URI ([RFC3986], Section 5).

所以就大膽用吧...

HTTP Header 裡與安全相關的 Header 的分析...

還是在 Zite 上看到的,對最大的一百萬個網站分析與安全有關的 HTTP Header:「Security Headers on the Top 1,000,000 Websites: November 2013 Report」。

數字大致上都有增加,不過對我來說的重點在於有列出所有與安全有關的 HTTP Header...

可以看到有這幾個:

  • Access-Control
  • Content-Security-Policy
  • Strict-Transport-Security
  • X-Content-Security-Policy
  • X-Frame-Options
  • X-Webkit-CSP

剛好可以拿來 review 設定...

送出 ooxx HTTP Header 提升安全性...

現在的 browser 支援一堆 HTTP Header 規格,用來防堵各種安全性問題。在「SecureHeaders」看到一包 Ruby Gems,可以針對這堆規格一次搞定,包括了:

就算不是用 Ruby 的人也可以拿文件說明的部份當入口,評估看看系統有哪些地方可以加強。

關於 Android 授權 (License) 的爭論:Linus Torvalds 的說法

昨天提到的「header file 與 GPL(v2) 的「衍生作品」...」,Linus Torvalds 也跑出來講話了:「Android: Sued by Microsoft, not by Linux

It seems totally bogus. We've always made it very clear that the kernel system call interfaces do not in any way result in a derived work as per the GPL, and the kernel details are exported through the kernel headers to all the normal glibc interfaces too.

他也不認為 header file (也就是提到的「kernel system call interfaces」) 會造成 GPLv2 內所提到的 derived work。

header file 與 GPL(v2) 的「衍生作品」...

Slashdot 上看到 Richard Stallman 在 2003 年 1 月對於 GPLv2 header file (當時只有 GPLv2,沒有 GPLv3) 對於作品是否有「感染力」的看法:「RMS On Header Files and Derivative Works」,也就是「如果我用了 GPLv2 的 header file,是否我的 code 因此就要使用 GPLv2」的問題。

Richard Stallman 在找了律師談過之後,引用 header file 不足以成為 GPLv2 裡面定義的「衍生作品」(Derivative work):

Our view is that just using structure definitions, typedefs, enumeration constants, macros with simple bodies, etc., is NOT enough to make a derivative work.

這篇剛好回應最近有人質疑 Android 因為使用 GPLv2 header file 而軟體本身使用非 GPLv2 授權的問題:「Android Faces Serious Linux Copyright / Copyleft Issues with GPL」:

Google used Linux headers, but did not release Android under the same GPL2 license, which is the most basic precept of GPL. (Android is released under the Apache Commercial License.)