Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Bezpieczeństwo systemu modułu
rolnix
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 16.04.2005
Skąd: Białowieża

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


Witam, problem jest krótki, lecz uniemożliwiający spokojny sen w nocy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . Otóż piszę średniej wielkości cms'a na potrzeby tworzonych przez siebie stron (po co pisać to samo wiele razy). Całe jego działanie chcę oprzeć na modułach, które byłyby dołączane wybiórczo, w zależności od potrzeb projektu. Wypociłem coś w stylu:

  1. <?php
  2. // config.inc.php:
  3.  
  4. // lista dozwolonych modułów
  5. $umodules = array('md_content', 'md_news', 'md_kolejnymodul' /*... */);
  6.  
  7. // index.php:
  8.  
  9. // pobieranie nazwy modułu do działania
  10. // GetPageArgument() to moja funkcja do wybierania z _get[]ów i _post[]ów
  11. $mode = str_replace(' ', '', GetPageArgument('mode', 'md_content'));
  12.  
  13. // ...
  14.  
  15. // kod wywołujący dany moduł
  16. $umodules_string = implode(' ', $umodules);
  17. if (stristr($umodules_string, $mode)) {
  18. // include'uje moduł
  19. include_once('modules/'.$mode.'/module_code.php');
  20. if (is_callable('main_'.$mode)) {
  21. $mdr_body = '';
  22. $mdr_title = '';
  23. // wywołuje funkcję main_md_nazwamodułu
  24. // i przekazuje jej referencje do zmiennych, gdzie ma być zwrócona treść
  25. if (call_user_func('main_'.$mode, &$mdr_body, &$mdr_title)) {
  26. $body .= $mdr_body;
  27. $page_title .= ' - '.$mdr_title;
  28. } else {
  29. $body .= 'Nie mogę wyświetlić żądanej treści';
  30. }
  31. } else {
  32.  
  33. }
  34. } else {
  35. $body .= "Nie mogę znalezc okreslonego modulu";
  36. }
  37.  
  38. // przykładowy plik, modules/md_content/module_code.php
  39.  
  40. function main_md_content(&$body, &$title) {
  41.  
  42. $result = '';
  43. $cmd = GetPageArgument('cmd', '');
  44. $content_id = GetPageArgument('content_id', 0);
  45.  
  46. return get_content($content_id, $body, $title);
  47.  
  48. }
  49. ?>


W katalogu /modules/md_nazwamodulu/ jest jeszcze zawsze plik module_admin.php do administracji oraz module_info.php z szybkimi do wyciągnięcia informacjami o module. Poza tym jest też oddzielna tablica $amodules[], która zawiera tablicę modułów wywoływanych zawsze, bez polecenia. Jakoś to wszystko działa... jestem tylko pewny jednej rzeczy - ten kod nie jest ani trochę bezpieczny. I celem tego tematu jest to, żebyście wskazali mi wszystkie możliwe furtki/błędy, które zostawiłem pisząc to. Jeśli gdzieś popełniłem coś naprawdę głupiego - opieprzcie mnie solidnie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . No i miłe też będą komentarze na temat wydajności tego wynalazku... bo jej też nie jestem pewien.
Go to the top of the page
+Quote Post

Posty w temacie
- rolnix   [php] Bezpieczeństwo systemu modułu   1.11.2007, 18:13:04


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: 22.08.2025 - 17:01