Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nietypowa walidacja, problem z bezpieczenstwem
lukaskolista
post
Post #1





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


Witam. Musze do bazy danych zapisac teksty uzytkownikow z tinymce editora. Musze to jednak zrobic w czystej postaci: nie moge przepuscic tekstu przez htmlspecialchars)= i zapisac do bazy, a nastepnie przy wyswietlaniu uzyc htmlspecialchars_decode(). Musze zapisac je ze znakami specjalnymi. W tym wlasnie problem. W takim przypadku edytor tekstowy staje sie okienkiem do wpisywania polecen dla hakerow. Macie moze pomysl, jak rozwiazac ten problem? Z gory dziekuje za pomoc:)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
fander
post
Post #2





Grupa: Zarejestrowani
Postów: 231
Pomógł: 22
Dołączył: 6.10.2008

Ostrzeżenie: (0%)
-----


Nie wiem dlaczego podchodzicie do tego w taki sposób że chłopak sam ma tworzyć zapytania, nie lepiej zaproponować koledze przejście na programowanie obiektowe, na początek klasy modeli w połączeniu z prostym PDO. PDO posiada lepsze "zabezpieczenia" przed sql injection niż ty sam jesteś w stanie wymyślić.
Rozwiąż to w ten sposób że tworzysz sobie klasę odpowiadającej tabelce w bazie z odopowiednimi metodami i atrybutami czyli:

  1. class mojaTableka{
  2. /**
  3.  $var PDO
  4.  */
  5. public static $_connection;
  6. public static $_insertSql = 'INSERT INTO mojaTabela (kolumna1,kolumna2,...) VALUES (:kolumna1,:kolumna2,...)';
  7. .
  8. .
  9. .
  10. public $kolumna1;
  11. public $kolumna2;
  12. public $kolumna2;
  13. .
  14. .
  15. .
  16.  
  17. public static parms = array(
  18. 'kolumna1' => PDO::PARAM_STR,
  19. .
  20. .
  21. .
  22. );
  23.  
  24. public function __set($key,$val){
  25. if(isset($this->$key)){
  26. $this->$key = $value;
  27. }
  28. }
  29.  
  30. public function __get($key){
  31. if(isset($this->$key)){
  32. return $this->$key;
  33. }
  34. }
  35.  
  36. public static function insert(mojaTableka $obiekt){
  37. try{
  38. $prep = self::$_connection->prepare(self::$_insertSql);
  39. foreatch(self::$params as $key => $val){
  40. $prep->bondParam(':'.$key,$obiekt->$key,$val);
  41. }
  42. return $prep->execute();
  43. }catch(Exception $e){
  44. return false;
  45. }
  46. }
  47.  
  48. public static function update(mojaTabelka $obiekt){
  49.  
  50. }
  51.  
  52. public static function dell(mojaTableka $obiekt){
  53.  
  54. }
  55.  
  56. public static function get($where){
  57.  
  58. }
  59.  
  60. public function save(){
  61. if($this->IDENTYFIKATOR !== NULL){
  62. mojaTablela::update($this);
  63. }
  64. else{
  65. mojaTablela::insert($this);
  66. }
  67. }
  68.  
  69.  
  70. }


Pisane z ręki mogą być błędy, ale zamysł jest prawidłowy. Jeśli wybierzesz moje rozwiązanie na pewno postaram się pomóc.

Ten post edytował fander 28.07.2010, 09:08:07
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 10:06