I anledning av diskussionerna runt sql-injections och säkerhet så undrar jag om nedanstående strippar bort "allt" ev farligt som kan tänkas skrivas in i ett textfält? (magic_quotes är påslaget)
htmlentities(stripslashes($_POST['kund']));
Finns det andra bättre sätt, bör det ovanstående kompletteras på ngt sätt?
SPiNMedlem sedan mars 20007 896 inlägg Nä, du bör göra:
$str = htmlentities( stripslashes( $_POST[ 'kund' ] ), ENT_QUOTES );
Då får du bort både enkel- och dubbelfnuttar, inte bara dubbelfnuttar som är default.
Hur den gör med | och \ vet jag inte - och de kan ju vara vanskliga. Åtminstone \. Testa!
<?php
$str = "---\---|---'---\"";
echo htmlentites( $str, ENT_QUOTES );
echo "<br />";
echo htmlentities( $str );
?>
Så får du se hur den gör. :)
kjellMedlem sedan dec. 1999757 inlägg htmlentities är bättre att köra när man hämtar från MySQL, liksom stripslashes. Skickas något till MySQL så använd addslashes istället fast det är lite onödigt om du ändå har magic_quotes_gpc påslaget.
Normalt så bör alla tecken mellan ' och ' tolkas som en sträng och av den anledningen oskadliggöra skadliga tecken (undantaget fnuttarna och \ såklart) som kan dela av en fråga och skicka in nya värden mellan dessa.
Nu är väl inget 100% säkert men skulle tro att man klarar sig en bit på vägen. Sedan tycker jag att man alltid ska kolla av alla fält för att se så dessa innehåller det man tänkt. Ska det exempelvis vara ett postnummer i ett fält så kollar man så antalet siffror stämmer och att inga andra tecken finns med.