Автор Тема: Достатъчно сигурен ли е този php скрипт ?  (Прочетена 6246 пъти)

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8911
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: Достатъчно сигурен ли е този php скрипт ?
« Отговор #15 -: Mar 15, 2010, 19:20 »
Нарочно пускам ново мнение, ако Марчето реши да затрие другото да не ми иде инфото. Значи пуснах същата тема в друг форум. Всички бяха съгласни, че трябва да е едно от двете, но никога и двете, като единия от другите "младоци " даде и една връзка:

http://cognifty.com/blog.entry/id=6/addslashes_dont_call_it_a_comeback.html

После се намесиха истинските програмисти. И там стигнаха до мнението, че нито разните слашес, нито real_escape в продукционна система. Трябвало да се ползва prepared statements и ORM (и двете ги чувам сефте), а всичко друго било средновековие и в никакъв случай не трябвало да се ползват.
« Последна редакция: Mar 15, 2010, 19:57 от go_fire »
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

victim70

  • Напреднали
  • *****
  • Публикации: 454
  • Distribution: Gentoo, Ubuntu
  • Window Manager: Kde Xfce
    • Профил
Re: Достатъчно сигурен ли е този php скрипт ?
« Отговор #16 -: Mar 15, 2010, 20:58 »
Приятелю, умният програмист не разчита на безгрешен код и на 1000 мнения - единственно разчита на тестове.
Всичко създадено от хора може да се строши от хора. Според мене го пускай така както си го написал. Събери малко инфо за това как работи, и има-няма проблеми, и продължавай.
Дори лошо работещият код е по добър от перфектният но неработещ.
Според мене ако работи го пускай. И чакай отзиви от тестерите. Е и ти пусни няколко тестчета да видиш какво става де.
Успех
Активен

"Господи, дай ми сила да променя нещата които немога да приема,
дай ми търпение да приема нещата които не мога да променя,
и ми дай мъдрост, да правя разликата между двете"

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Достатъчно сигурен ли е този php скрипт ?
« Отговор #17 -: Mar 15, 2010, 21:35 »
@go_fire - хех, мерси, макар че не се считам за толкова "голям" ;)
ORM и prepared statements не са единствените решения за работа с ДБ - и за тях има много "за и против". Аз също работя с ORM - ползвам Doctrine, макар и някои да я считат за прекалено тежка.

В този случай единственото, което е сигурно е, че не трябва да се създава "суперобект" (било то и процедурно имплементиран), който да върши всичко - проверка за валидност, съхранение в ДБ, генериране на HTML и т.н.
Би трябвало кодът да е разделен на Model-View-Controller принципа, като Моделът да е композитен обект - да притежава инстанции на обект за валидация, обект за съхранение в ДБ и други необходими... т.е. да има отделни обекти, всеки с една единствена отговорност в целия механизъм на обработка и представяне на данните. При това връзката между обектите и знанията им за другите обекти трябва да е минимална, а в идеалния случай - никаква.

Самият факт, че първите два реда от всички скриптове показани от toti84 се повтарят във всеки един от тях говори, че нещо определено не е както трябва.

При мен реализацията на контрол над автентификацията (и авторизацията в проекти с роли) изпълянва един единствен обект:

CodeIgniter
Код
GeSHi (PHP):
  1. abstract class Auth_Controller extends Base_Auth_Controller
  2. {
  3. function __construct()
  4. {
  5. parent::__construct();
  6. $this->load->model('application/CurrentUser_Model', 'currentUser');
  7. }
  8.  
  9. protected function _hasPermission($method, $arguments)
  10. {
  11. return $this->currentUser->isLogged;
  12. }
  13.  
  14. protected function _notPermitted($method, $arguments)
  15. {
  16. Error::register('Не сте автентифицирали пред системата.');
  17. $this->view('response');
  18. }
  19. }

Всички останали контролери са наследници на този контролер. Няма HTML,  няма SQL, няма дори следа от DB, SESSION и т.н. Обектът Error съдържа масив от всички съобщения за грешки - без форматиране.

Login/logout действията също се изпълняват от наследник на този контролер:

Код
GeSHi (PHP):
  1. class CurrentUser extends Auth_Controller
  2. {
  3. function __construct()
  4. {
  5. parent::__construct();
  6.  
  7. $this->suspendPermissionCheck();
  8. }
  9.  
  10. public function login()
  11. {
  12. $this->currentUser->doLogin();
  13. $this->view('response');
  14. }
  15.  
  16. public function logout()
  17. {
  18. $this->currentUser->doLogout();
  19. $this->view('response');
  20. }
  21. }
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Достатъчно сигурен ли е този php скрипт ?
« Отговор #18 -: Mar 15, 2010, 21:42 »
Приятелю, умният програмист не разчита на безгрешен код и на 1000 мнения - единственно разчита на тестове.

В света на Agile Software Development едновременно си прав и грешиш.

1) Да, тестовете са задължителни, но те са измислени от теб самия и проверяват за проблеми, които ти поставяш. Поради това са ти нужни 1000+ мнения, за да покриеш непокритите от теб проблеми.

2) Според философията на Agile Software Development, решенията се базират на "добри практики", а това са точно решенията, получени чрез отсяване на 1000+ мнения ;)
« Последна редакция: Mar 15, 2010, 22:12 от VladSun »
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

toti84

  • Напреднали
  • *****
  • Публикации: 115
    • Профил
Re: Достатъчно сигурен ли е този php скрипт ?
« Отговор #19 -: Mar 17, 2010, 09:15 »
@VladSun Много ли ще е нахално, ако те помоля да дадеш един прос пример как се използват твойте класове за автенитикация.

Благодаря предварително ...
Активен

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Достатъчно сигурен ли е този php скрипт ?
« Отговор #20 -: Mar 17, 2010, 11:12 »
Аз именно заради това пуснах темата за MVC - http://www.linux-bg.org/forum/index.php?topic=37459.0

От нея се надявам да излязат теми, които да покажат практически решения и да подтикнат хората да в този форум да ги ползват. Мисля си да започна с решения за твоята тема ;)
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: Достатъчно сигурен ли е този php скрипт ?
« Отговор #21 -: Mar 18, 2010, 00:14 »
Както обещах, започваме дискусии на тема PHP MVC frameworks и тяхното ползване. Вече пуснах една тема с инсталация и начално конфигуриране на CodeIgniter - http://www.linux-bg.org/forum/index.php?topic=37480.msg193413

Би било добре да пробваш и да пишеш за възникнали проблеми.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P