Findes der en PHP funktion der kan tjekke om brugeren fx skriver en e-mail? Har forsøgt at google mig frem til det, men har ikke kunne få det til at virke :(
Kan man ikke bruge htmlspecialchars til at rense et brugerinput for SQL-injections? Fx ved at sætte det rundt om alle sine $_POST variabler? Se eksempel:
#8 Hvorfor vil du, til hver en pris, bruge htmlspecialchars? Vil du undgå SQL-injection så brug PDO eller mysqli API og prepared statement. Tror du ikke du tænker på mysql_real_escape_string() når du nu snakker om SQL-injection? Men det er stadig ikke nok :o(
Det vil jeg bestemt heller ikke. Jeg har bare forstået det således at man kan bruge det til beskytte af sin hjemmeside (med brug af database), mod folk der kan manipulerer med SQL-injections til fx uautoriseret administratoradgang, hvor man har et databasekald, som fx når et bruger indtaster oplysninger til oprettelse af en bruger, eller logger ind.
Jeg har til en hjemmeside brugt en PDO forbindelse i en separat fil (connect.inc) (Hjemmesiden er et eksamensprojekt). Denne henter jeg senere hver gang jeg laver et database kald.
require_once('connect.inc.php'); $conn = dbConnect('pdo') or die('no connection');
Men gør også brug af mysqli (når en bruger logger ind) og mysql(til at oprette indhold med brug af en dropdown bar hvor data hentes med mysql_connect og msql_fect_array) extensions.
Jeg aner faktisk intet om validering og database-sikkerhed, vil bare gerne tage højde for det i mit projekt. Har brugt en sha1 til beskyttelse af kodeord fx. Har derudover hørt om SQL-injections og læste man skal "rense" brugerinput og troede htmlspecialchars blev brugt til dette, på sine $_POST og $_GET.
Hvilke forhold kan en udvikler tage for at undgå at blive offer for et SQL injection-angreb. Hvordan renser jeg ALT input hvad der nu måtte være farlige tegn. Hvilke specialtegn bør jeg filtrerer helt fra, eller konvertere (escapes - og hvordan gør man det?), så de ikke behandles aktivt, men bliver gemt, som det tegn de repræsenterer?
Du beskytter dig mod SQL injection ved konsekvent at bruge prepared statement.
Derudover boer du generelt ogsaa validere input og checke alt for om det har det rigtige format (fordi udover SQL ibjection er der ogsaa XSS og andre grimme ting).
Man beskytter sig mod SQL injections med PDO og mysqli extensions ved at bruge prepared statements. Det er nemt og naturligt, men man kan stadig snige en parameter konkatanering ind hvis man vil.
Man beskytter sig mod SQL injuections i mysql extension ved at bruge mysql_real_escape_string. Og det kraever lidt omtanke at faa detr gjordt korrekt.
Igen mange tak for dine svar arne_v, jeg beklager for min uvidenhed, men brænder for dette og er derfor meget interesseret i forstå det korrekt og lære så meget som muligt.
Men vil prøve at kigge mere på disse prepared statements, hvis jeg forstå det korrekt, kun er til brug med mysqli og PDO?
arne_v når du skriver "Hvis du bruger htmlspecialchars paa dit inout, saa gemmer du HTML i databasen, hvilket er et meget skidt design." - hvordan kan det være at det er skidt design?
Men er det ikke en anerkendt metode at bruge htmlspecialchars til sanitering?
http://en.wikipedia.org/wiki/HTML_sanitization "HTML sanitization is the process of examining an HTML document and producing a new HTML document that preserves only whatever tags are designated "safe". HTML sanitization can be used to protect against cross-site scripting and SQL injection attacks by sanitizing any HTML code submitted by a user."
Så ved udtræk og præsentation på klient-siden vil html-kode ikke blive fortolket af browseren med i stedet stå blot som ufortolket kode?
Så kan stadig ikke helt følge dig hvorfor det er skidt design?
htmlspecialchars bruges hvis du vil have vist HTML fremfor at faa det fortolket
<b>xxxx</b>
viser f.eks. tags fremfor at bolde teksten.
En feature som er mest relevant paa programmerings web sites.
----
HTML sanitizing er en god ting, men htmlspecialchars() goer at de farlige ting vises som ufarlig tekst - i de fleste tilfaelde vil man foretraekke at faa dem helt vaek.
Hvis du har noget data i din database og det skal sendes til en gammel browser som HTML, som JSON til en nyere browser og som XML til en smartphone app er det saa smart at gemme data med HTML formatering?
Det lyder det ikke som. Men forstår ikke rigtig hvorfor du snakker om JSON og XML?
Hvis man fx har et mini-cms CRUD webløsning, hvor brugere kan skrive nyheder og besøgende kan kommenterer, denne bliver lavet med HTML bliver det så fortolket som JOSN, XML og ikke HTML på andre platforme?
Ja okay, nu forstår jeg hvad du mener. Så er det måske en god ide bare helt at fjerne disse tegn helt, for vil selvfølgelig ikke have HTML'en fortolket i mine input og heller ikke have dem vist. Kender du tilfældigvis en metode til dette?
Mange tak igen, jeg tror jeg begynder at se det hele i en større sammenhæng nu.
Synes godt om
Ny brugerNybegynder
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.