Alle indlæg af Tobias Hinnerup

Undgå advarsler om usikkert indhold

Når man har truffet valget at dirigere sine besøgende til en SSL krypteret side, vil det oftest være i høj grad uhensigtsmæssigt, hvis browseren skulle finde på at komme med advarsler om, at siden indeholde usikre elementer.

IE6 - Mixed content warning
Eksempel på IE6 advarselsdialogboks

De logiske
Som ofte er tilfældet viser der sig i praksis at være forskel på hvordan markedets browsere håndterer sikkerhed – herunder er de selvskrevne kandidater til en checkliste for at undgå problemer er inkluderinger af eksternt indhold, som skal angives enten med en relativ eller HTTPS URI.

Værd at bide mærke i, i forhold til ovenstående er at følge op på hvad eventuelt 3. parts værktøjer som eksempelvis Google Analytics, Omniture og lignende indsætter af referencer – de fleste af disse har HTTPS-baserede ækvivalenter.

De bemærkelsesværdige
Hvad der formentlig er knap så indlysende er, at i Internet Explorer også <object codebase="..."> og <embed pluginspage="..."> skal angives relativt eller eksplicit med HTTPS. På trods af at browseren ikke gennemfører en request på URI’en, bliver der lavet en kontrol af overenstemmelse med dokumentets protokol.

Intuitivt eller ej, gør det sig også gældende for Internet Explorer, at eventuelle inkluderede URI’er der resulterer i en HTTP fejlkode, vil blive behandlet som usikre, idet det er browserens klassificering af sine egne fejlsider.

De lumske
Til gengæld er det formentlig kun blandt Microsofts egne udviklere indlysende, at brugen af iframe’s med enten tom eller ingen src-angivelse betragtes som en reference til HTTP og altså vil give en advarsel på en HTTPS side. Har man brug for den tomme iframe, kan eventuelt angives en reference til et tomt dokument, eller værdien “javascript:false

Sidst, men bestemt ikke mindst: Hvis der benyttes javascript der kalder removeChild() på et element der har et baggrundsbillede kan fejlen også optræde. Omgåelsen er nem: Sæt i stedet outerHTML='' (og nej, der er ingen logisk og rimelig grund til at tingene skal virke sådan).

De ligegyldige
Blandt de ting der kan ignoreres uden konsekvenser, er protokolangivelser i:

  • DOCTYPES
  • XHTML namespaces
  • Links

Forhåbentlig ovenstående kan redde uskyldige forbipasserende for timevis af fejlsøgning – kommer man alligevel dertil hvor der skal graves, er netværksovervågning et godt angrebspunkt – herfra er høstet gode erfaringer med både Ethereal og Fiddler.

Bemærk, at CONNECT requests altid vil ske via HTTP, men alt andet skal ske på HTTPS.