Автор Тема: $_POST['submit'] защита ;)  (Прочетена 752 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

howto

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 44
  • -Получени: 4
  • Публикации: 341
$_POST['submit'] защита ;)
« -: 13 Март 2014, 08:37:24 »
Здравейте! То самото заглавие подсказва какво всъщност ще правя. Самата идея е да се направи функция която всъщност да може да се проверява със един иф. Идеята е това.
Код: PHP
  1. if (!empty($_POST['submit']))
  2.  {
  3. // продължаваме ....
  4.  }
  5.  
Обаче аз не искам друг от някъде си например от 127.0.0.1 да ми праща пост заявки! Та за това замислих да си направя токени, но след като се замислих да пиша 100 неща за една заявка просто не видях смисъл да го правя. Със сесия също не искам да го правя освен ако самата сесия не трябва да реализира някъде логика иначе директно от $_SESSION = true няма да го правя така... Останаха ми начините като време и енкрипт. Например си мисля да го направя със security question ама викам чакай я да попитам и другите, че да съм спокоен. Някой защитава ли си пост заявките и как го прави би ли споделил?  ::)

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 269
  • Публикации: 2595
  • meow
Re: $_POST['submit'] защита ;)
« Отговор #1 -: 13 Март 2014, 11:20:42 »
Това нещо за което говориш се нарича Cross-Site Request Forgery. Точно с токени стават нещата, ето един обикновен пример http://www.sitepoint.com/preventing-cross-site-request-forgeries/
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

howto

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 44
  • -Получени: 4
  • Публикации: 341
Re: $_POST['submit'] защита ;)
« Отговор #2 -: 13 Март 2014, 12:33:28 »
Благодаря за поста ава. Тоя пример обаче не ме кефи написан по този начин... Днес ще го помися и задължително ще ползвам някаква криптация директно за $_request :)

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 269
  • Публикации: 2595
  • meow
Re: $_POST['submit'] защита ;)
« Отговор #3 -: 13 Март 2014, 14:40:06 »
Това което бях написал няма да ти свърши работа, извинявай за подвеждането :)
« Последна редакция: 19 Март 2014, 23:48:24 от Avalanche »
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

howto

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 44
  • -Получени: 4
  • Публикации: 341
Re: $_POST['submit'] защита ;)
« Отговор #4 -: 13 Март 2014, 18:05:50 »
Така де така  ;D . Дойдохме си на думата. Обаче се чудя с какво ги защитавате. Като цяло има много ама не знам аз лично ще се постарая да ползвам rand задължително в тази криптация. Не знам що толкова съм се вдъхновил да защитавам поста ама нещо бръмбарите в главата ми ехтят!

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 269
  • Публикации: 2595
  • meow
Re: $_POST['submit'] защита ;)
« Отговор #5 -: 19 Март 2014, 23:51:40 »
Бат Райо, още едно сори, нещо си бях наумил аз и те бях пратил у сачките с предишния пост.

Обаче аз не искам друг от някъде си например от 127.0.0.1 да ми праща пост заявки!

Ако това ти е проблема, може наистина да го филтрираш с един if. $_SERVER['HTTP_HOST'] съдържа информацията къде аджеба се намира сайта, това предполагам е което търсиш ти.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

Zorko

  • Full Member
  • ***
  • Благодарности
  • -Казани: 33
  • -Получени: 8
  • Публикации: 206
Re: $_POST['submit'] защита ;)
« Отговор #6 -: 20 Март 2014, 23:31:40 »
Здравейте! :)
Според мен единственият начин да се предпазиш е, да сложиш captcha. Така няма как да изпращат от друго място. Те пак могат да изпращат, но ще трябва ръчно да въвеждат кода, няма да става автоматично.
При другите случай поне според мен няма как да стане, с токени и т.н., няма как да се защити. (може и да има) Форми могат да се изпращат винаги от CURL, дори да има токени и сесии и т.н.
За мен най-добрия вариант е captcha-та. Слагаш си например една captcha с 4 цифри, която да не пречи на потребителите, но и да те защитава от изпращане на формите от друго място. Между другото имаше и някакви скриптове дето разбиваш и captcha, но мисля че те важеха за по-простите (тези капчи, които имат само 2 цвята -> цвят за фон и цвят за цифрите).
Успех! Ако намериш друг вариант го сподели, защото и на мен винаги ми е било интересно, как може да се защити.

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 120
  • -Получени: 73
  • Публикации: 995
  • Кибик
Re: $_POST['submit'] защита ;)
« Отговор #7 -: 21 Март 2014, 19:43:41 »
Ако си мераклия, ще те науча как да си измислиш оригинална капча.
п.п. Даже по-хубава от моята ;)
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: $_POST['submit'] защита ;)
« Отговор #8 -: 22 Март 2014, 10:09:09 »
Райчо бръмбарите ехтят в главата ти.  Като цяло не виждам къде е въпроса тук.  Ако искаш да проверяваш дали формата ти е събмитната може да сложиш един input hidden с някаква стойност. След това проверяваш по този начин:
Код: PHP
  1. if($_POST['submit']&& $_POST['hidden']==="някаква стойност")
  2. {
  3. //produljavame s kod-a
  4. }
  5. else
  6. {
  7. exit("nqkva greshka");
  8. }
  9.  
С токени се прави по почти същия начин.     

howto

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 44
  • -Получени: 4
  • Публикации: 341
Re: $_POST['submit'] защита ;)
« Отговор #9 -: 23 Март 2014, 22:51:27 »
Идеята ми е да хвана $_REQUEST. И задължително машината да потвърждава, че тази заявка се праща от публичния интерфейс към нея. И между другото за NoObZ има доста начини да не ти правят хватки за тези заявки и както споменах в предния си пост, питам как го правите вие. Дори да сложиш една сесия със GetKey() method и  KeyDestroy() method пак ще свърши работата само, че трябва да си зареждаш сесии за глупости и не е приятно... Обаче иначе има cript-to и няколко начина още при конфигуриране на правиш мастър кей ако си любопитен можеш да прочетеш. За капачите не мисля, че е необходимо защото тук се проверява за бот следователно ако той не премине през http://localhost/ и никога не е влизъл на http://localhost/ няма как да отиде на http://localhost/?page=jeje_hack_me . и ако това стане тогава трябва да се реализира логика на кода например токен, капача, бан  и т.н...
« Последна редакция: 23 Март 2014, 22:55:01 от howto »