Avatar billede htx98i17 Professor
22. september 2017 - 07:57 Der er 5 kommentarer og
1 løsning

qoutes, æøå og prepared statements

Jeg har et input felt hvor value="database_data"

Dataene er indsat og hentet med mysqli og prepared statements.

I databasen er alle quotes escaped med backslashes og det har den(prepared statements) gjort automatisk.

Dvs at når dataen udskrives i value="" i input-feltet og der er quotes (anførselstegn) i, så afsluttes value der.

Jeg kender addslashes/stripslashes/htmlentities/urlencode men ingen af dem kan jeg få til at benytte, da der i input-feltet også kan være danske ÆØÅ, som vil se mærkelige ud ved brug af nogle af funktionerne.

1. Så hvad skal jeg egentlig gøre?

2. Er sikkerheden ved brug af prepared statements okay bare ved at indsætte variablen direkte fra $_GET i bind_param() ?
Avatar billede repox Seniormester
22. september 2017 - 08:09 #1
1. Når du bruger prepared statements er det ikke nødvendigt at bruge escaping funktioner; hvis du føler der er et behov for det så gør det noget forkert.

2. I princippet ja (med forbehold), men i praksis er det en dårlig idé at indsætte data du ikke validerer for indhold.
Avatar billede htx98i17 Professor
22. september 2017 - 08:22 #2
Men jeg bruger ikke selv escaping funktioner. Det er noget den selv har bestemt at gøre. Jeg indsætter direkte som i spm 2.

Skal jeg slå escaping fra et eller andet sted?
Avatar billede htx98i17 Professor
22. september 2017 - 08:38 #3
Det er en gammel PHP version hvor jeg kan slå maqic qoutes til og fra kan jeg se.
Avatar billede repox Seniormester
22. september 2017 - 08:48 #4
Så vil jeg nok anbefale dig at få opdateret din PHP version; Magic Quotes blev deprecated i PHP 5.3 og helt fjernet i PHP 5.4; PHP 5.4 havde "End of Life" den 3. september 2015.
Avatar billede htx98i17 Professor
22. september 2017 - 08:50 #5
ja

Men indtil da skal jeg finde en løsning på problemet.
Avatar billede htx98i17 Professor
22. september 2017 - 09:23 #6
problemet i value="" har jeg indtil videre løst sådan:

<?php echo(ucfirst(htmlentities(stripslashes(utf8_decode($_GET['s']))))); ?>

htmlentities() omdanner anførselstegn til html
stripslashes() fjerner slashes ved de data der har fået dette
utf8_decode() fixer problemet htmlentities() laver med danske ÆØÅ

hvis nogen har input hører jeg dem hjertens gerne!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester