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: