蓄意協議錯誤:蘭利法則

banq發表於2016-09-29
Langley's Law(蘭利法則)是與著名的伯斯塔爾法則(Postel’s Law)相反,伯斯塔爾法則是:
傳送時要保守;接收時要開放自由;
Be conservative in what you send, be liberal in what you accept.

HTML語法就是遵循伯斯塔爾法則,HTML能接受任何文字,哪怕不嚴格遵循HTML語法。在傳送文件的時候,我們會盡量保守一些,儘量採用最佳實踐,儘量確保文件格式良好。但從瀏覽器的角度說,它們必須以開放的姿態去接收任何文件。

伯斯塔爾法則的問題是帶來互用性差,將伯斯塔爾法則反過來就是蘭利法則:
傳送時要偶爾邪惡;接受時要保守。
Be occasionally evil in what you send, and conservative in what you accept.

比如Netflix使用chaos monkey故意搗亂其系統,以獲得系統的健壯性,下面是google推出Roughtime這個NTP授權時間校驗服務的引文:

一個健康的軟體生態系統不會出現透過指定軟體應該如何行為,然後才能設定其軟體實現做正確的事情,相反,我們計劃讓Roughtime伺服器針對一小部分請求返回無效,偽造的答案。這些虛假答案將包含錯誤的時間,而且也將是另一種方式無效,例如,一個簽名可能不正確,或訊息中的標籤可能是錯誤的順序。客戶端實現如果不進行所有必要的檢查,就不會發現他們得到胡說八道的答案,這對於他們變成一個黑帽交談(Blackhat talk)前暴露錯誤BUG已經足夠有效。


Introducing Deliberate Protocol Errors: Langley’s

相關文章