/ 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
html injections
Fra : Dj Uncas


Dato : 28-02-05 23:13

Hejsa

Jeg har lavet et forum til en forening, og har modtaget en mail fra en
bekymret bruger af siden. Han siger at han tror forummet er "sårbare overfor
HTML-injektions. En relativ let måde at smadre jeres forum på."

Dette gør selvfølgelig også mig bange, men jeg aner ikke hvad han snakker
om!

Er der nogen der kan forklare hvad det er, samt hvordan det kan afhjælpes?



 
 
Jens Gyldenkærne Cla~ (28-02-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-02-05 23:20

Dj Uncas skrev:

> Jeg har lavet et forum til en forening, og har modtaget en
> mail fra en bekymret bruger af siden. Han siger at han tror
> forummet er "sårbare overfor HTML-injektions. En relativ let
> måde at smadre jeres forum på."

Prøv at læse artiklen her: <http://asp-faq.dk/article/?id=95>
--
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

JH (01-03-2005)
Kommentar
Fra : JH


Dato : 01-03-05 09:27

Jens Gyldenkærne Clausen wrote:
>>Jeg har lavet et forum til en forening, og har modtaget en
>>mail fra en bekymret bruger af siden. Han siger at han tror
>>forummet er "sårbare overfor HTML-injektions. En relativ let
>>måde at smadre jeres forum på."
>
>
> Prøv at læse artiklen her: <http://asp-faq.dk/article/?id=95>

Tror ikke han mener SQL injections, men HTML injections. Jeg har godt
nok ikke hørt det begreb før, men tror jeg ved hvad der menes: Når en
bruger indtaster tekst i forumet kan de måske taste HTML elementer og
måske endda Javascript. Hvis forumet ikke tager højde for dette kan det
rigtignok smadre det hele godt og grundigt (altså rent visuelt - dine
data og applikation er intakt).

Altså hvis en person indtaster fx:
<h1 style="color:green;font-size:100pt">THIS_FORUM_SUCKS_!!!!!!!</h1>
gemmes det blot i databasen uden at lave om teksten/ændre
HTML-elementerne. Dvs når andre personer ser ovenstående tekst vil di se
nogle kæmpestore grønne bogstaver.

Af det mere ondsindede kunne man forestille sig et javascript der
redirecter til en anden side og forsøger at narre folk til at afgive
personlige oplysninger, eller stjæle folks cookies som kan bruges til
session hijacking.

Det man skal gøre er enten slet ikke at tillade HTML elementer i den
tekst man kan indtaste, eller blot at tillade nogle ganske bestemte. De
HTML elementer man ikke tillader skal erstattes, så de vises som tekst
og ikke som HTML, altså:
<h1 style="color:green;font-size:100pt">THIS_FORUM_SUCKS_!!!!!!!</h1>
bliver til:
&lt;h1
style="color:green;font-size:100pt"&gt;THIS_FORUM_SUCKS_!!!!!!!&lt;/h1&gt;


--
Mvh
Jeppe

We have unmistakable proof that throughout all past time, there has been
a ceaseless devouring of the weak by the strong.

Casper Bang (01-03-2005)
Kommentar
Fra : Casper Bang


Dato : 01-03-05 11:57

> Det man skal gøre er enten slet ikke at tillade HTML elementer i den tekst
> man kan indtaste, eller blot at tillade nogle ganske bestemte. De HTML
> elementer man ikke tillader skal erstattes, så de vises som tekst og ikke
> som HTML, altså:
> <h1 style="color:green;font-size:100pt">THIS_FORUM_SUCKS_!!!!!!!</h1>
> bliver til:
> &lt;h1
> style="color:green;font-size:100pt"&gt;THIS_FORUM_SUCKS_!!!!!!!&lt;/h1&gt;

Du glemte vist at sige HVORDAN det gøres :)
Server.URLEncode(myvar)



JH (01-03-2005)
Kommentar
Fra : JH


Dato : 01-03-05 14:05

Casper Bang wrote:
> Du glemte vist at sige HVORDAN det gøres :)

Godt vi har dig

server.htmlencode vil dog erstatte ALLE forekomster af HTML-elementer
som Jens også skriver. Hvis man vil tillade visse HTML-elementer må man
bruge replace eller regular expressions.

--
Mvh
Jeppe

We have unmistakable proof that throughout all past time, there has been
a ceaseless devouring of the weak by the strong.

Dj Uncas (01-03-2005)
Kommentar
Fra : Dj Uncas


Dato : 01-03-05 14:30


"JH" <spam@spam.com> skrev i en meddelelse
news:42246865$0$295$edfadb0f@dread12.news.tele.dk...
> Casper Bang wrote:
>> Du glemte vist at sige HVORDAN det gøres :)
>
> Godt vi har dig
>
> server.htmlencode vil dog erstatte ALLE forekomster af HTML-elementer som
> Jens også skriver. Hvis man vil tillade visse HTML-elementer må man bruge
> replace eller regular expressions.

Tak skal i have.. Nu er det også ordnet, så jeg kan sove i fred om natten...



Casper Bang (01-03-2005)
Kommentar
Fra : Casper Bang


Dato : 01-03-05 11:58

> Det man skal gøre er enten slet ikke at tillade HTML elementer i den tekst
> man kan indtaste, eller blot at tillade nogle ganske bestemte. De HTML
> elementer man ikke tillader skal erstattes, så de vises som tekst og ikke
> som HTML, altså:
> <h1 style="color:green;font-size:100pt">THIS_FORUM_SUCKS_!!!!!!!</h1>
> bliver til:
> &lt;h1
> style="color:green;font-size:100pt"&gt;THIS_FORUM_SUCKS_!!!!!!!&lt;/h1&gt;

How, det skulle have været:
Server.HTMLEncode(myvar)



Jens Gyldenkærne Cla~ (01-03-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-03-05 12:30

JH skrev:

> Tror ikke han mener SQL injections, men HTML injections.

Det kan godt tænkes. En ganske simpel måde at slippe for den slags
problemer er ved at anvende Server.HTMLencode når man udskriver data. Så
har man effektivt forhindret enhver brug af html-koder i indlægget.

Hvis man vil tillade nogle koder, bliver det lidt sværere. Det kan gøres
med regulære udtryk - se evt. siden her:
<http://gyros.dk/usenet/asp/regex_html.asp>

--
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

JH (01-03-2005)
Kommentar
Fra : JH


Dato : 01-03-05 14:14

Jens Gyldenkærne Clausen wrote:
>>Tror ikke han mener SQL injections, men HTML injections.
>
> Det kan godt tænkes.

Det var i hvert fald det han skrev Men jeg har aldrig hørt det
udtryk før.

> En ganske simpel måde at slippe for den slags
> problemer er ved at anvende Server.HTMLencode når man udskriver data. Så
> har man effektivt forhindret enhver brug af html-koder i indlægget.

Ja, og man kan opfinde sine egne "tags" som fx:
hest
som så med fx reg exp kan blive til:
<strong>hest</strong>
enten når man lægger det i DB'en eller ved visning, alt efter hvilken
strategi man vælger.

> Hvis man vil tillade nogle koder, bliver det lidt sværere. Det kan gøres
> med regulære udtryk - se evt. siden her:
> <http://gyros.dk/usenet/asp/regex_html.asp>

Ja, jeg ville også helt klart benytte reg exp i sådan en situation, det
er vel en del hurtigere end strengmanipulation med replace?

--
Mvh
Jeppe

We have unmistakable proof that throughout all past time, there has been
a ceaseless devouring of the weak by the strong.

Jens Gyldenkærne Cla~ (01-03-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-03-05 15:44

JH skrev:

> Ja, og man kan opfinde sine egne "tags" som fx:
> hest
> som så med fx reg exp kan blive til:
> <strong>hest</strong>

Man behøver ikke at opfinde egne tags - jeg har en funktion der
genskaber udvalgte htmlkoder efter en tur gennem Server.HTMLencode:

function addformat(tekst)
   dim regEx,strOut
   set regEx = New regExp
   regEx.IgnoreCase = True
   regEx.Global = True
   regEx.Pattern = "&lt;([/]*[bi])&gt;"
   strOut = regEx.replace(tekst, "<$1>")
   set regEx = nothing
   addformat = strOut
end function

Man må selv afgøre hvad der er mest praktisk.


> enten når man lægger det i DB'en eller ved visning, alt efter hvilken
> strategi man vælger.

Jeg vil anbefale at man foretager erstatningen når teksten vises. Ellers
skal man også have en sikker måde at konvertere tilbage til den viste
kode på, hvis teksten skal kunne redigeres.


> Ja, jeg ville også helt klart benytte reg exp i sådan en situation, det
> er vel en del hurtigere end strengmanipulation med replace?

Jep - bla. fordi man kan behandle start- og slutkode samtidig.

--
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

JH (01-03-2005)
Kommentar
Fra : JH


Dato : 01-03-05 17:01

Jens Gyldenkærne Clausen wrote:
> Man behøver ikke at opfinde egne tags - jeg har en funktion der
> genskaber udvalgte htmlkoder efter en tur gennem Server.HTMLencode:
>
> function addformat(tekst)
>    dim regEx,strOut
>    set regEx = New regExp
>    regEx.IgnoreCase = True
>    regEx.Global = True
>    regEx.Pattern = "&lt;([/]*[bi])&gt;"
>    strOut = regEx.replace(tekst, "<$1>")
>    set regEx = nothing
>    addformat = strOut
> end function
>
> Man må selv afgøre hvad der er mest praktisk.

Ja, men det er unægtelig mere smart at bruge almindeligt kendte HTML
elementer sammen med reg exp frem for at opfinde sine egne "tags".
Metoden har jeg set (og også selv brugt engang) på diverse PHP fora og
er nok mest kendt som UBB-kode?

>>enten når man lægger det i DB'en eller ved visning, alt efter hvilken
>>strategi man vælger.
>
> Jeg vil anbefale at man foretager erstatningen når teksten vises. Ellers
> skal man også have en sikker måde at konvertere tilbage til den viste
> kode på, hvis teksten skal kunne redigeres.

Ja, det er jo et spørgsmål om man vil gemme originalen eller man vil
gemme resultatet i sin DB. Rent performancemæssigt er smarteste at gemme
resultatet - altså det der skal vises efter det har været en tur gennem
reg exp.

--
Mvh
Jeppe

We have unmistakable proof that throughout all past time, there has been
a ceaseless devouring of the weak by the strong.

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

Månedens bedste
Årets bedste
Sidste års bedste