topor1988
4.01.2009, 20:52:15
Witam.
Mam baze danych, w niej powiedzmy 2 pola, ID(int), i NEWS(text).
Do tego mam formularz, a w nim textarea.
Użytkownik może dodac newsa z możliwością HTMLa, czyli może każdy znak wysłać.
Teraz jest tu problem z bezpieczeństwem. Jak przefiltrować tego newsa zeby przy dodaniu go do bazy, nie było możliwości żadnego ataku SQLInjection itp. Addslashes? Jak to się ma do wyświetlenia potem tego w bazie? Podkreślam że każdy znak może być wpisany, a potem ma być wyświetlane również jako html. Czyli jak ktoś wpisze <a href=""></a> to wyswietli mu normalnie linka. Nie bedzie za dużo dziwnych nowych znaczków dodawanych przy zapisywaniu do bazy.
Spawnm
4.01.2009, 21:00:13
topor1988
4.01.2009, 21:16:43
A co z mysql_escape_string() oraz addslashes() ? Nie polecacie?
Rafal Filipek
4.01.2009, 21:21:11
z dokumentacji
Cytat
This function became deprecated, do not use this function. Instead, use mysql_real_escape_string().
co do addslashes to mozna to stosowac jak nie mozna uzyc mysql_real_escape_string
dodatkowo mozesz sobie poczytac troche :
http://pl2.php.net/manual/en/security.data...l-injection.php
pinochet
4.01.2009, 21:27:13
Można też zastosować PDO:
Cytat
Example #3 Fetching data using prepared statements This example fetches data based on a key value supplied by a form. The user input is automatically quoted, so there is no risk of a SQL injection attack.
<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) { while ($row = $stmt->fetch()) {
}
}
?>