/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Større sikkerhed ved css-skift
Fra : Erik Ginnerskov


Dato : 13-06-06 21:29

Hej NG

Jeg har hidtil haft et script, der gav mulighed for brugerdefineret css på
nogle sider:

<% dim style
If Request.QueryString("style") <> "" Then
style= Request.QueryString("style")
Else
style="main.css"
End If %>

Nu viser det sig bare, at scriptet er usikkert at bruge og jeg vil derfor
have lavet det om, så kun kan vælges mellem et forud defineret antal
css-filer:

<%
style_ID = Request.QueryString("style")
dim style
Select Case style_ID
Case "main.css", "ds2.css", "ds3.css"
style = style_ID
Case Else
style = "main.css"
End Select
%>

Efterfølgende indlæses css på denne måde i sidens head:

<link href="<%Server.Execute(style)%>" rel="stylesheet" type="text/css" />

Scriptet er et forsøg på omskrivning af det velfungerende script, jeg bruger
til dynamisk include [1].

Det fungerer bare ikke med css, så et eller andet har jeg alligevel bøffet
med. Jeg får ingen fejlmelding, men siden vises helt uformateret.

[1]
<%
side_ID = Request.Querystring("id")
Dim side
Select Case side_ID ' definer de 'lovlige' sider
Case "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8"
side = side_ID
Case Else
side = "s1" ' default indhold hvis intet er specificeret
End Select
Server.Execute(side & ".inc")
%>

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk/




 
 
Jens Gyldenkærne Cla~ (13-06-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-06-06 21:58

Erik Ginnerskov skrev:

> Nu viser det sig bare, at scriptet er usikkert at bruge og jeg
> vil derfor have lavet det om, så kun kan vælges mellem et
> forud defineret antal css-filer:

Det er en udmærket strategi - da man så har rimelig sikkerhed for
at der ikke kan vælges ikke-eksisterende css-ark. For
fuldstændighedens skyld vil jeg dog lige nævne at man godt kan lave
en sikring der alene blokerer for eksterne referencer til filer
eller kode. Det kan gøres ved at tjekke at værdien fra querystring
ikke indeholder specialtegn (primært <, >, /, & og ").


> Efterfølgende indlæses css på denne måde i sidens head:
>
> <link href="<%Server.Execute(style)%>" rel="stylesheet"
> type="text/css" />

Fejlen ligger her. Server.Execute beder serveren om at køre
indholdet af variablen style som en asp-side - det giver ikke
mening. Du skal bare udskrive variablen style:

<link href="<%= style %>" rel="stylesheet" type="text/css" />

(evt.:

<link href="<%= Server.HTMLencode(style) %>" rel="stylesheet"
type="text/css" />


> Scriptet er et forsøg på omskrivning af det velfungerende
> script, jeg bruger til dynamisk include [1].

Forskellen mellem dynamisk include og dit css-valg-script er at du
i førstnævnte skal have indholdet af filnavnet hentet af asp-
parseren, mens du i css-scriptet bare skal udskrive filnavnet
(hvorefter browseren henter indholdet).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Erik Ginnerskov (13-06-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 13-06-06 22:22

Jens Gyldenkærne Clausen wrote:

>> <link href="<%Server.Execute(style)%>" rel="stylesheet"
>> type="text/css" />
>
> Fejlen ligger her. Server.Execute beder serveren om at køre
> indholdet af variablen style som en asp-side - det giver ikke
> mening. Du skal bare udskrive variablen style:

> <link href="<%= style %>" rel="stylesheet" type="text/css" />
>
> (evt.:
>
> <link href="<%= Server.HTMLencode(style) %>" rel="stylesheet"
> type="text/css" />

Så fungerer det som forventet. Der blokeres også for indlæsning af uønsket
materiale (fremmede css-filer f.eks.)

> Forskellen mellem dynamisk include og dit css-valg-script er at du
> i førstnævnte skal have indholdet af filnavnet hentet af asp-
> parseren, mens du i css-scriptet bare skal udskrive filnavnet
> (hvorefter browseren henter indholdet).

Det er jeg klar over og troede også at jeg havde taget højde for det - men
altså bare ikke godt nok.

Takker.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk/



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste