Zasada wytrzymałości
W informatyce zasada solidności to wytyczna projektowa oprogramowania, która stwierdza: „bądź konserwatywny w tym, co robisz, bądź liberalny w tym, co akceptujesz od innych”. Często zmienia się to sformułowanie w następujący sposób: „bądź konserwatywny w tym, co wysyłasz, bądź liberalny w tym, co akceptujesz”. Zasada ta jest również znana jako prawo Postela , od nazwiska Jona Postela , który użył tego sformułowania we wczesnej specyfikacji TCP .
Innymi słowy, programy wysyłające komunikaty do innych komputerów (lub innych programów na tej samej maszynie) powinny być całkowicie zgodne ze specyfikacjami, ale programy odbierające komunikaty powinny akceptować niezgodne dane wejściowe, o ile ich znaczenie jest jasne.
Wśród programistów, aby tworzyć kompatybilne funkcje , znana jest również zasada bycia kontrawariantnym dla typu wejściowego i kowariantnym dla typu wyjściowego .
Interpretacja
Dokument RFC 1122 (1989) rozszerzył zasadę Postela, zalecając programistom „zakładanie, że sieć jest wypełniona złowrogimi jednostkami, które będą wysyłać pakiety zaprojektowane tak, aby mieć najgorszy możliwy skutek”. Protokoły powinny umożliwiać dodawanie nowych kodów dla istniejących pól w przyszłych wersjach protokołów poprzez akceptowanie komunikatów o nieznanych kodach (ewentualnie ich logowanie). Programiści powinni unikać wysyłania wiadomości z „legalnymi, ale niejasnymi funkcjami protokołu”, które mogłyby ujawnić braki w odbiornikach, i projektować swój kod „nie tylko tak, aby przetrwać inne niewłaściwie zachowujące się hosty, ale także aby współpracować w celu ograniczenia ilości zakłóceń, jakie takie hosty mogą powodować we współdzielonym obiekt komunikacyjny”.
Krytyka
W 2001 roku Marshall Rose scharakteryzował kilka problemów związanych z wdrażaniem podczas stosowania zasady Postela przy projektowaniu nowego protokołu aplikacji. Na przykład wadliwa implementacja wysyłająca niezgodne komunikaty może być używana tylko z implementacjami tolerującymi te odchylenia od specyfikacji, aż do momentu, w którym prawdopodobnie kilka lat później zostanie połączona z mniej tolerancyjną aplikacją, która odrzuca jej komunikaty. W takiej sytuacji identyfikacja problemu jest często trudna, a wdrożenie rozwiązania może być kosztowne. Dlatego Rose zaleciła „wyraźne sprawdzanie spójności w protokole… nawet jeśli nakładają one narzut związany z implementacją”.
W latach 2015–2018 w serii internetowych wersji roboczych Martin Thomson argumentuje, że zasada solidności Postela w rzeczywistości prowadzi do braku solidności, w tym bezpieczeństwa:
Wada może utrwalić się jako de facto standard. Aby odtworzyć nieprawidłowe zachowanie, wymagana jest jakakolwiek implementacja protokołu, w przeciwnym razie nie będzie ona interoperacyjna. Jest to zarówno konsekwencją stosowania zasady solidności, jak i efektem naturalnej niechęci do uniknięcia błędów krytycznych. Zapewnienie interoperacyjności w tym środowisku jest często określane jako dążenie do „kompatybilności między błędami”.
W 2018 roku artykuł Florentina Rocheta i Oliviera Pereiry na temat technologii zwiększających prywatność pokazał, jak wykorzystać zasadę solidności Postela w protokole routingu Tor , aby zagrozić anonimowości usług cebulowych i klientów Tor.
Zobacz też
Linki zewnętrzne
- Historia zasady solidności (internetu) (Nick Gall, maj 2005)
- Protokół internetowy , strona 22; J. Postel, IEN 111, sierpień 1979.