[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Sikkerhedsting??



Søren Boll Overgaard skrev:
Jacob Sparre Andersen skrev:

Er det et passende faktum at langt de fleste indbrud på unix-systemer skyldes defekt PHP-kode?

Jeg har ikke set nogen konkret statistik. Men det kan da bestemt ikke udelukkes.

Jeg vil heller ikke påstå at den smule helt konkret statistik jeg har er komplet dækkende.

Er det et passende faktum at PHP mangler den stærke typekontrol der er et vigtigt element i at skrive sikkerhedskritiske programmer?

Ja og nej.

Php er ganske rigtig typesvagt. Jeg som udgangspunkt er jeg ikke enig i at typecheckere i nævneværdig grad fanger sikkerhedsrelaterede fejl. For mig at se er det væsentligt vigtigere at sproget er udrustet med et runtime system der fanger de klassiske angrebsvektorer, såsom: off-by-one, buffer-overrun, etc.

Det er rigtigt at der er en væsentligt sikkerhed i at være beskyttet mod bufferoverløb og deslige. - En sikkerhed to andre populære sprog; C og C++ ikke har.

Hvis ellers vi antager at sprogets implementation (oversætter/fortolker) er af tilfredsstillende kvalitet, kan jeg ikke se at typestyrke gør forskellen.

Stærke typesystemer er en generel sikring mod fejl. Hvis programmerne kører i en perfekt sandkasse er fejl i programmerne principielt ikke et sikkerhedsproblem. Men når Apache ikke kører PHP-programmer i en sandkasse, men giver dem adgang til at skrive, læse og udføre kode på systemet er der potentiale for problemer.

Hvis du kan fremvise overbevisende eksempler på det modsatte, vil jeg meget gerne se dem - og revidere min opfattelse.

Så må jeg på jagt, for jeg har ikke. De eksempler jeg har kigget på var mere noget jeg ville kalde dynamisk kode end dynamiske typer.

Er det et passende faktum at der ikke findes værktøjer der kan lave en statisk sikkerhedsanalyse af PHP-programmer?

Der findes en del af sådan nogen dimser til C og C++.

Ja.

Er de gode sprog til sikkerhedskritiske programmer, herunder webbaserede tjenester?

Nej. Men de ovennævnte dimser gør dem bedre til det, end de ellers ville være. Hvis du for eksempel kan bevise at din kode er fri for »exceptions«, så er du en stor fejlklasse sikrere. (Det er du også, når du ikke kan have bufferoverløb.)

Jeg tænkte mere i baner som Ada, Eiffel, SPARK, eller passende moderne Pascal-varianter.

Jacob
--
Det virker på en eller anden måde absurd at det anses for god tone at sige
at "vi har sundheds/skole/social..-systemet for at give erhverslivet gode
konkurrencevilkår", mens det anses for samfundsomstyrtende at foreslå at
"erhverslivet hovedopgave er at financiere velfærdssystemer".
-- Sune Rastad Bahn

Reply to: