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

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Totalt noob spørgsmål
Fra : Thomas Løcke


Dato : 09-07-02 14:51

Ok, nu ikke noget med at grine af newbien her!

Jeg har et textarea:

<form method="POST" action="news.php">
<textarea name="tekst" cols="20" rows="10">Her står alt muligt mystisk
tekst..</textarea>
<input type="submit">
</form>

Den "kalder" så mit PHP script, som ser ud som følger:

<?php
$tekst=$_POST['tekst'];

echo "<TABLE WIDTH=200 BORDER=0 CELLSPACING=0>";
echo "<TR><TD><P align=justify><FONT SIZE=-1>$tekst</FONT></p></TD></TR>";
echo "</TABLE>";
?>

Ok, det virker sådan set ganske glimrende, bortset fra når jeg bruger en '
(apostrof). Skriver jeg f.eks. "it's a monkey" i mit textarea, så outputter
PHP scriptet det til "it/'s a monkey!"..

Hva' gør jeg galt? Hva' laver den elendige / der foran min apostrof?

Med venlig hilsen
Thomas Løcke



 
 
Henrik Hansen (09-07-2002)
Kommentar
Fra : Henrik Hansen


Dato : 09-07-02 14:54

"Thomas Løcke" <thomas@responsum.dk> wrote:

> Ok, nu ikke noget med at grine af newbien her!
>
> Jeg har et textarea:
>
> <form method="POST" action="news.php">
> <textarea name="tekst" cols="20" rows="10">Her står alt muligt mystisk
> tekst..</textarea>
> <input type="submit">
> </form>
>
> Den "kalder" så mit PHP script, som ser ud som følger:
>
> <?php
> $tekst=$_POST['tekst'];

$tekst = stripslashes(...);

læs mere i manualen

--
Henrik Hansen

Peter Brodersen (09-07-2002)
Kommentar
Fra : Peter Brodersen


Dato : 09-07-02 14:59

On 9 Jul 2002 14:51:06 +0100, "Thomas Løcke" <thomas@responsum.dk>
wrote:

>Ok, det virker sådan set ganske glimrende, bortset fra når jeg bruger en '
>(apostrof). Skriver jeg f.eks. "it's a monkey" i mit textarea, så outputter
>PHP scriptet det til "it/'s a monkey!"..

PHP med magic quotes aktiveret sætter selv "\" foran al brugerinput.
http://dk.php.net/manual/en/configuration.php#ini.magic-quotes-gpc

Du kan bruge funktionen stripslashes() for at fjerne uønskede
backslashes ved outputtet. Hvis du har adgang til PHP-opsætningen, kan
du slå det fra.

Eksempel:
magic_quotes_gpc = no

--
- Peter Brodersen

Thomas Løcke (09-07-2002)
Kommentar
Fra : Thomas Løcke


Dato : 09-07-02 15:28

Hej Peter,

> PHP med magic quotes aktiveret sætter selv "\" foran al brugerinput.
> http://dk.php.net/manual/en/configuration.php#ini.magic-quotes-gpc

Ok, jeg indrømmer blankt at jeg måske er dummere end gennemsnittet, men det
link fattede jeg lige præcis nul af..! Hehe... Hva' er hele ideen med magic
quotes?? Svaret undviger mig ved læsning af linket..

> Du kan bruge funktionen stripslashes() for at fjerne uønskede
> backslashes ved outputtet. Hvis du har adgang til PHP-opsætningen, kan
> du slå det fra.
>
> Eksempel:
> magic_quotes_gpc = no

Jeg har adgang til php.ini, da det ligger på min egen hjemmelavede
Slackware/Xitami server. Vil straks lure på sagen (den der php.ini fil
skræmmer mig en del)..

Men igen, hva' er ideen med at gøre dette, når man alligevel fjerner dem med
stripslashes?

Mvh
Thomas L.



Niels Andersen (09-07-2002)
Kommentar
Fra : Niels Andersen


Dato : 09-07-02 15:45

Thomas Løcke wrote in <3d2af2d5$1@news.wineasy.se>:
> Men igen, hva' er ideen med at gøre dette, når man alligevel fjerner dem
> med stripslashes?

Det skulle egentlig være en smart funktion, til at øge sikkerheden på sites
lavet af newbies. Jeg synes dog ikke det er smart, og for mig at se går det
ud over sikkerheden.

Anyway, det er kun noget man skal bruge i forbindelse med databaser. Indtil
du leger med databaser er det ligegyldigt hvad den tekniske årsag er.

Uanset hvad:
Slå featuren fra. Kan du ikke det, så kør stripslashes på alt input fra
browseren.

Hvis du så senere hen skal bruge database, så husk at køre addslashes på al
tekst-brugerinput, lige inden du sender det til databasen.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Peter Brodersen (09-07-2002)
Kommentar
Fra : Peter Brodersen


Dato : 09-07-02 15:53

On Tue, 09 Jul 2002 16:44:34 +0200, Niels Andersen
<niels-usenet@myplace.dk> wrote:

>Uanset hvad:
>Slå featuren fra. Kan du ikke det, så kør stripslashes på alt input fra
>browseren.

Da Thomas Løcke nævner at han er newbie, vil jeg ikke anbefale det
uden videre. Mange scripts, man henter på nettet, har en forudsætning
om at magic_quotes er aktiveret (og laver ikke et tjek for det i
starten af koden), og det kan så give sikkerhedsproblemer for folk,
der ikke kigger al kildetekst igennem til de PHP-scripts, der hentes
hjem.

--
- Peter Brodersen

Niels Andersen (09-07-2002)
Kommentar
Fra : Niels Andersen


Dato : 09-07-02 16:06

Peter Brodersen wrote in <agetcs$emt$2@dknews.tiscali.dk>:
>>Uanset hvad:
>>Slå featuren fra. Kan du ikke det, så kør stripslashes på alt input fra
>>browseren.
> Da Thomas Løcke nævner at han er newbie, vil jeg ikke anbefale det
> uden videre. Mange scripts, man henter på nettet, har en forudsætning
> om at magic_quotes er aktiveret (og laver ikke et tjek for det i
> starten af koden), og det kan så give sikkerhedsproblemer for folk,
> der ikke kigger al kildetekst igennem til de PHP-scripts, der hentes
> hjem.

Jeg snakker om at lære PHP. Der er det fint at gøre noget ud af
sikkerheden. Især når det er så simpelt som her.

At bruge andres PHP er noget helt andet. Bruger man tilfældige amatørers
kode, fundet i et eller andet mystisk hjørne af internettet, uden i det
mindste at skimme koden af en "ekspert", så kan man ikke forvente at det
bare kører.


Man kunne godt nævne, at "tilfældige amatørers kode" ikke er særlig god,
mens dels er det jo ikke lige det, vi snakker om her, og dels synes jeg i
hvert fald ikke selv at det lyder særligt overraskende.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Peter Brodersen (09-07-2002)
Kommentar
Fra : Peter Brodersen


Dato : 09-07-02 15:52

On 9 Jul 2002 15:27:33 +0100, "Thomas Løcke" <thomas@responsum.dk>
wrote:

>> PHP med magic quotes aktiveret sætter selv "\" foran al brugerinput.
>> http://dk.php.net/manual/en/configuration.php#ini.magic-quotes-gpc
>Ok, jeg indrømmer blankt at jeg måske er dummere end gennemsnittet, men det
>link fattede jeg lige præcis nul af..! Hehe... Hva' er hele ideen med magic
>quotes?? Svaret undviger mig ved læsning af linket..

Jeg kunne ikke lige finde et passende punkt i manualen, heller ikke
under security-afsnittet.

Ideen er, at du uden videre skulle kunne lave SQL-queries, fx:

mysql_query("SELECT pinkode FROM secret WHERE pass = '$brugerinput'");

Problemet er, at brugeren kan snyde sig ud, ved fx at sende:
x' or '1' = '1

Det vil resultere i at
SELECT pinkode FROM secret WHERE pass = '$brugerinput'
interpoleres til:
SELECT pinkode FROM secret WHERE pass = 'x' or '1' = '1'

Dette vil altid være sandt ('1' = '1'), så her er der risiko for at
brugeren kan snyde sig igennem.

Ved at PHP automatisk kører addslashes()-funktionen, bliver det
indtastede i stedet til:
x\' or \'1\' = \'1

Query'en bliver nu til:
SELECT pinkode FROM secret WHERE pass = 'x\' or \'1\' = \'1'

Det giver således den ønskede effekt.


Funktionaliteten er ganske kontroversiel af flere årsager:

Problemet er, at det kan give sikkerhed, uden at folk forstår hvorfor.
Er folk vant til at queries ikke kan være et sikkerhedsmæssig problem
("det tager magic quotes sig af"), kan det gå hen og give problemer i
andre sammenhænge - fx hvis man hiver data ind fra filer, fra andre
databaser, getenv(), etc., og så selv glemmer at bruge addslashes(),
fordi man ikke er vant til at skulle tænke over behandling/validering
af data i den forbindelse.

Ydermere er erfarne programmører fristet til at deaktivere
funktionaliteten, da de gerne selv vil styre manipulation af data. Det
betyder så blot at kode måske ikke er så portérbart, og man skal have
en række forudsætninger omkring PHP-konfigurationen.

--
- Peter Brodersen

Thomas Løcke (10-07-2002)
Kommentar
Fra : Thomas Løcke


Dato : 10-07-02 07:45

Hej Peter,


> Ideen er, at du uden videre skulle kunne lave SQL-queries, fx:
> mysql_query("SELECT pinkode FROM secret WHERE pass = '$brugerinput'");
> Problemet er, at brugeren kan snyde sig ud, ved fx at sende:
> x' or '1' = '1
> Det vil resultere i at
> SELECT pinkode FROM secret WHERE pass = '$brugerinput'
> interpoleres til:
> SELECT pinkode FROM secret WHERE pass = 'x' or '1' = '1'
> Dette vil altid være sandt ('1' = '1'), så her er der risiko for at
> brugeren kan snyde sig igennem.
> Ved at PHP automatisk kører addslashes()-funktionen, bliver det
> indtastede i stedet til:
> x\' or \'1\' = \'1
> Query'en bliver nu til:
> SELECT pinkode FROM secret WHERE pass = 'x\' or \'1\' = \'1'
> Det giver således den ønskede effekt.

ROFL!!

Det fattede jeg lige præcis ingenting af.. Men det tjener dog sit formål,
for jeg fatter dog at det ingen betydning har for mig på mit nuværende
stade.

Jeg vil derfor troligt fortsætte med at bruge stripslashes, sådan at jeg
"slipper" for at rode for meget i den særdeles skræmmende php.ini fil.

Tusind tak for hjælpen til alle der har deltaget i denne tråd. Det er
værdsat.



Mvh
Thomas



Kristian Risager Lar~ (10-07-2002)
Kommentar
Fra : Kristian Risager Lar~


Dato : 10-07-02 09:45

> Jeg vil derfor troligt fortsætte med at bruge stripslashes, sådan at jeg
> "slipper" for at rode for meget i den særdeles skræmmende php.ini fil.

Kan du sige hvad der er skræmmende ved at redigere i php.ini?
Der er endda dokumentation i selve filen.

--
Mvh Kristian Risager Larsen - http://kezze.dk - mailto:kezze@kezze.dk
"Der er 10 slags mennesker. Dem der kan binære tal og dem der ikke kan."


Thomas Løcke (10-07-2002)
Kommentar
Fra : Thomas Løcke


Dato : 10-07-02 10:44

Hej Kristian,

>
> Kan du sige hvad der er skræmmende ved at redigere i php.ini?
> Der er endda dokumentation i selve filen.
>

Ja, det kan jeg da sagtens: Det er særdeles skræmmende fordi A. Jeg ikke
fatter halvdelen den tekst der står der (jeg er ikke nogen ørn til teknisk
engelsk), og B. fordi jeg sidder og roder med php.ini filen på min første
Linux installation nogensinde. De to ting kombineret gør automatisk at jeg
bliver en smule forsigtig med hvad jeg foretager mig.

Jeg forudsiger at jeg om forholdsvis kort tid vil føle mig lidt mere sikker,
både hvad angår PHP og Linux. Når den "sikkerhed" indtræffer, så får jeg nok
mere lyst til at rode rundt i maven på systemet. Indtil da må i hærdede folk
bære over med mig...



Thomas




Niels Andersen (10-07-2002)
Kommentar
Fra : Niels Andersen


Dato : 10-07-02 10:49

Thomas Løcke wrote in <3d2c01eb$1@news.wineasy.se>:
>> Kan du sige hvad der er skræmmende ved at redigere i php.ini?
> Ja, det kan jeg da sagtens: Det er særdeles skræmmende fordi
[...]

Prøv at åbne filen, find denne linje:

magic_quotes_gpc = On
(Linje 319 hos mig)

Ændr "On" til "Off"

Gem

Genstart Apache
(Jeg skriver "/etc/init.d/apache reload", der er nok andre metoder der er
nemmere for andre)

Andet skal der ikke til, og straks er det hele knapt så skræmmende. :)

Men det er selvfølgelig op til dig. :)

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Thomas Løcke (10-07-2002)
Kommentar
Fra : Thomas Løcke


Dato : 10-07-02 11:11

Hehe, det er jo nærmest en chat det her!

> Prøv at åbne filen, find denne linje:
> magic_quotes_gpc = On
> (Linje 319 hos mig)
> Ændr "On" til "Off"
> Gem
> Genstart Apache
> (Jeg skriver "/etc/init.d/apache reload", der er nok andre metoder der er
> nemmere for andre)

Nu bruger jeg så ikke Apache. Jeg har valgt at installere en Xitami, da jeg
kendte den fra NT. Ydermere fik jeg så lært en smule mere om Linux mens jeg
installerede Xitami.

Jeg regner med at skifte til Apache ganske snart.

Pointen er dog fanget. Og jeg har også allerede luret linien ud i .ini'en.
Nu mangler jeg så bare at beslutte mig for om jeg skal lære at bruge
stripslashes, eller om jeg bare skal skrive Off.

> Andet skal der ikke til, og straks er det hele knapt så skræmmende. :)

Korrekt! Viden har en tendens til at fjerne frygt.

> Men det er selvfølgelig op til dig. :)

Nemlig - og jeg er nu en kende mere frisk på at skære lidt dybere i PHP.
Hvem ved, måske jeg en dag, en fjern fremtid, rent faktisk kan hjælpe
andre...


Thomas




Niels Andersen (10-07-2002)
Kommentar
Fra : Niels Andersen


Dato : 10-07-02 10:17

Thomas Løcke wrote in <3d2bd7db$1@news.wineasy.se>:
> Jeg vil derfor troligt fortsætte med at bruge stripslashes, sådan at jeg
> "slipper" for at rode for meget i den særdeles skræmmende php.ini fil.

Skræmmende? Det er lige så simpelt som at skrive et indlæg på usenet,
bortset fra at der ikke er nogen der brokker sig...

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Thomas Løcke (10-07-2002)
Kommentar
Fra : Thomas Løcke


Dato : 10-07-02 10:46

> Skræmmende? Det er lige så simpelt som at skrive et indlæg på usenet,
> bortset fra at der ikke er nogen der brokker sig...

Hehe.. Godt sagt.

Den sætning vil jeg tage med mig, næste gang jeg sidder i VIM og lurer på
..ini filen med opspærede øjne og tvivlen nagende i baghovedet.




Kristian Risager Lar~ (10-07-2002)
Kommentar
Fra : Kristian Risager Lar~


Dato : 10-07-02 17:06

>> Skræmmende? Det er lige så simpelt som at skrive et indlæg på usenet,
>> bortset fra at der ikke er nogen der brokker sig...
> Den sætning vil jeg tage med mig, næste gang jeg sidder i VIM og lurer på
> .ini filen med opspærede øjne og tvivlen nagende i baghovedet.
Jeg er væsentligt mere skræmt over VI/VIM end php.ini i nano ;)
--
Mvh Kristian Risager Larsen - http://kezze.dk - mailto:kezze@kezze.dk
"Der er 10 slags mennesker. Dem der kan binære tal og dem der ikke kan."


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

Månedens bedste
Årets bedste
Sidste års bedste