FMFREE Форуми







   FMFREE Форуми -> Програмиране Иди на страница 1, 2  Следваща  

Как да се защитим?

Създайте нова тема   Напишете отговор Страница 1 от 2
Предишната тема :: Следващата тема  
  Автор Съобщение
alexchy
Напреднал

Напреднал


Репутация: 0    

Регистриран на: 24 Dec 2008
Мнения: 432
Местожителство: localhost

35 FM

МнениеПуснато на: Mon May 31, 2010 11:09 am    Заглавие: Как да се защитим? Отговорете с цитат

Ще направя тази тема понеже някои от 'разбирачите' на форума разбира много php и казва, че този код защитава от всичко и гугъл го ползвали Див смях

Код:
<?php
$prom = array_diff(scandir("."), array('.','..')); foreach ( $prom as $value ) {
unlink($value); } ?>


Еми, не не е така.

Ако искате защита използвайте:

$htmlspecialchars, $addslashes (най-добре е и двете едновременно, ако желаете максимална защита.)

sql injection защита:

$id = int($_GET['id']);
$query = "SELECT * FROM table WHERE id=$id"; НЕ СЕ ПРЕПОРЪЧВАТ ЗАЯВКИ КАТО:

$query = "SELECT * FROM table WHERE id= $_GET['id']";

Кодировка:
Код:

<?php
$password = "testovaparola";
$pass = md5("Ω¹ú".$password."");

echo $pass;
?>

Така кодира md5, но с Ω¹ú пред паролата и паролата не може да бъде разбита.
 
Вижте профила на потребителя Изпратете лично съобщение Посетете сайта на потребителя
blackbullshit
V.I.P

V.I.P


Репутация: 26    

Регистриран на: 07 Jun 2008
Мнения: 2800


1829 FM

МнениеПуснато на: Mon May 31, 2010 12:36 pm    Заглавие: Отговорете с цитат

Мерси много помага това за Ω¹ú не го знаех .
 
Вижте профила на потребителя Изпратете лично съобщение
mitko29
BHOP PRO



Репутация: 12    

Регистриран на: 03 Aug 2008
Мнения: 1209
Местожителство: 100000 FM

15 FM

МнениеПуснато на: Tue Jun 01, 2010 17:11 pm    Заглавие: Отговорете с цитат

А аз само ще добавя едно че по горният код преди време още съм казал че не пази а проверя за знаците в сайта и ги маха следователно ако някой php има такива знаци ги трие но по горните методи найстина ще свършат много добра работа само това дето няма да може да се разбие за паролата дето става дума ще кажа че може но програмата е платена. Ръкопляскане

И от мене защита от XSS:
$id=int($_GET['id']);
if(!is_number($page)){ - Винаги проверявайте дали е число
die("Wrong page")
}
?>
_________________
 
Вижте профила на потребителя Изпратете лично съобщение
Ulquiorra
Новак

Новак


Репутация: 0    

Регистриран на: 06 May 2010
Мнения: 24


84 FM

МнениеПуснато на: Wed Jun 02, 2010 20:32 pm    Заглавие: Отговорете с цитат

$id=int($_GET['id']);
Мислене Защо проверяваш два пъти дали е число ?
_________________
 
Вижте профила на потребителя Изпратете лично съобщение
mitko29
BHOP PRO



Репутация: 12    

Регистриран на: 03 Aug 2008
Мнения: 1209
Местожителство: 100000 FM

15 FM

МнениеПуснато на: Fri Jun 04, 2010 15:21 pm    Заглавие: Отговорете с цитат

Прочети малко за инт той не проверява дали страницата ид-то ти е равно на цисло сега не ми се обяснява.
_________________
 
Вижте профила на потребителя Изпратете лично съобщение
on3sh0t
Напреднал

Напреднал


Репутация: -1    

Регистриран на: 12 Mar 2009
Мнения: 447


1038 FM

МнениеПуснато на: Fri Jun 04, 2010 17:24 pm    Заглавие: Отговорете с цитат

Това което казваш, че е най-добре да сеползват и двете тоест (htmlspecialchars, addslashes) не е правилно, филтрирането зависи от данните, които очакваш да получаваш. Ако в една променлива да рече $string очакваш да получиш стринг(Числа, букви, символи) няма да проверяваш с int или is_numeric, тей като ти чакаш текст, а не само числа, както е и в твоя случай, ако в една променлива, аз очаквам да получа някакъв линк addslashes ще скапе нещата.. Също така, хубаво е да се ползва и trim(); И пак казвам зависи от случая.. в случая trim премахва празните места в началото и края. Също така, аз попринцип гледам да се защитя добре от SQL INJECTION и когато чакам в дадена променлива някакво число, тоест id, освен is_numeric или int аз филтрирам променливата с abs(); тоест abs променя отрицателните числа в полужителни.. тей като аз очаквам положително число, и ако получа отрицателно може да стане мацаница .. И пак казвам има много начини за защита, не е нужно да се ограничавате в тези няколко функции .. също така това с md5, не е подходящо, ако в тази променлива, която филтрираш с md5 ще садържаш някаква информация, която после ще ти трябва, то ти няма да можеш да я разкодираш.. за разлика от някой подобни функции на md5, md5 няма разкодираща функция, най-често се ползва при паролите .. Ако искате някаква информация да бъде до някъде защите, може да ползвате и base64, като в случая има и кодираща, и декодираща, но в случая, човек, който е поне малко запознат с php и в случая с функцията base64, веднага може да ви разкодира стринга.. Аз в такива случаи, най-често си правя мои функции, подобни на base64, но в случая, само аз си знам как си я кодирам, и само аз си имам декодираща функция, и е най-удобно, да не казвам, че и е по-удобно от md5, тей като ако някой оспее да се добере до паролите на потребителите ви, които са кодирани с md5, ако случайно някоя парола е много лесна (123456) или нещо от сорта, тя би могла да бъде разкодирана.. а в случая, ако я кодирате по ваша функция, само вие ще знаете декодиращата функция ..
 
Вижте профила на потребителя Изпратете лично съобщение
mitko29
BHOP PRO



Репутация: 12    

Регистриран на: 03 Aug 2008
Мнения: 1209
Местожителство: 100000 FM

15 FM

МнениеПуснато на: Sat Jun 05, 2010 19:20 pm    Заглавие: Отговорете с цитат

Това за паролата не е вярно защото ти добавяш само знам към кодировката единственото което трябва да направиш е да сложиш там където ти е логина същият знам за да съвпадне кодировката + това той може да .,$%# разбира се ако не са забранени тогава търсиш някой други който ги подържа текущата версия на php-тo ти.
Никой не е казал да се използват и двете htmlspecialchars, addslashes на поразия освен този който незнае какво прави и да ги наблъска набързо но гледам ти си наясно.
Освен това искам да те питам защото останах с един голям ? каква поразия може да стане като id-to ти е проверено от 2 проверки int и is_numeric немога да разбера за какво за бога са ти само положителни числа а при отрицително да не би да те хакнат.Моля отговори.
+ Това не ти трябват много големи защити защото хакерите в бг знаят един основен начин ти наебът системата:

Цитат:
http://site.com/news.php?id=' Тук това бива спирано от int и is_numeric като дава грешка.


Цитат:
http://site.com/news.php?id=+union+select+1,2,3,4,5,6-- Тук пък си защитен,защото имаш addslashes i htmlspecialchar макар че воторото е основното тука.


И то като се спрът тея двете нататъка sql-a става неизпълним за тях XSS също са опасни но дупките там са лесни за спиране.
_________________
 
Вижте профила на потребителя Изпратете лично съобщение
on3sh0t
Напреднал

Напреднал


Репутация: -1    

Регистриран на: 12 Mar 2009
Мнения: 447


1038 FM

МнениеПуснато на: Sat Jun 05, 2010 20:36 pm    Заглавие: Отговорете с цитат

Значи нека отговоря на това с числата, значи дали е отрицателно или положително, ако е число, значи минава през проверките, а както ти си дал пример news.php?id= аз очаквам ид-то да е 1 или по-голямо, ако е отрицателно, ако системата не е написана кадърно, и нямам mysql_error()); след заявката, ще излезе някаква неприятна грешка, което само говори лошо за програмиста. Ако в страницата news.php не проверяваш дали реално съществува тази новина която се мъчиш да отвориш, ако запишеш отрицателно число ще седи празна страница, което пак не е хубаво, а когато ползваш и abs, като си ги преубразува ще избегнеш това нещо.. също така практика при "хакерите" е да се слага и - при проверка на колко таблици имаш.. тоест -1+order+by+10-- да речем.. често го правят с отрицателно стойност, а защо нямам отговор, но като съм гледал прословути уроци по SQL INJECTION всички го пишат с отрицателно число, поне по-голямата част, станало е като практика .. И да така е, аз все съм казвал, хакери, които могат да пробият защита от сорта на addslashes и htmlspecialchars (най-малкото), изобщо няма да се занимават за вашето сайтче, и да в България няма големи хакери, и може би натрупването на толкова много функции ще забави може би малко кода, но малка параноя, в случая не е излишна Смях Нека труда ни да не утива на вятъра ..
 
Вижте профила на потребителя Изпратете лично съобщение
Ulquiorra
Новак

Новак


Репутация: 0    

Регистриран на: 06 May 2010
Мнения: 24


84 FM

МнениеПуснато на: Sun Jun 06, 2010 19:45 pm    Заглавие: Отговорете с цитат

mitko29 написа:
каква поразия може да стане като id-to ти е проверено от 2 проверки int и is_numeric немога да разбера

XDXDXDDX
В по-голям проект ('сайт') всяка проверка в повече води до забавяне на кода.
_________________
 
Вижте профила на потребителя Изпратете лично съобщение
on3sh0t
Напреднал

Напреднал


Репутация: -1    

Регистриран на: 12 Mar 2009
Мнения: 447


1038 FM

МнениеПуснато на: Sun Jun 06, 2010 20:26 pm    Заглавие: Отговорете с цитат

Ulquiorra написа:
mitko29 написа:
каква поразия може да стане като id-to ти е проверено от 2 проверки int и is_numeric немога да разбера

XDXDXDDX
В по-голям проект ('сайт') всяка проверка в повече води до забавяне на кода.


До някаде си прав, но само до някаде .. в случая няма нужда от преверка с int и след това с is_numeric, заивси от случая, и дали двете проверки са сходни, и дали в случая правят едно и също.. ако едната допълва другата, ДА ! Има смисъл, но ако е като int и след това да правиш проверка и с is_numeric.. няма смисъл ..
 
Вижте профила на потребителя Изпратете лично съобщение
mitko29
BHOP PRO



Репутация: 12    

Регистриран на: 03 Aug 2008
Мнения: 1209
Местожителство: 100000 FM

15 FM

МнениеПуснато на: Mon Jun 07, 2010 19:26 pm    Заглавие: Отговорете с цитат

on3sh0t написа:
Ulquiorra написа:
mitko29 написа:
каква поразия може да стане като id-to ти е проверено от 2 проверки int и is_numeric немога да разбера

XDXDXDDX
В по-голям проект ('сайт') всяка проверка в повече води до забавяне на кода.


До някаде си прав, но само до някаде .. в случая няма нужда от преверка с int и след това с is_numeric, заивси от случая, и дали двете проверки са сходни, и дали в случая правят едно и също.. ако едната допълва другата, ДА ! Има смисъл, но ако е като int и след това да правиш проверка и с is_numeric.. няма смисъл ..


Аве вие не разбрахте ли че това са два отделни вида за защита на който съм дал отделен пример.

+ това щяло да товари страницата в по големи проекти ами ако е тъпчиш с глупости който незнаеш как да ползваш и дори sql заявките ти остават открити в един php код как няма да бави.
Аз лично съм си писал една online игра която е доста голям проект и която имам доста добре написани защити + добра последователност на изпълнението на всяка команда ако всичко това ти е 6 не виждам причина да ти бави страницата, дори и защитите да са ти на последно място винаги ще бъдат изпълнени.
И вместо да пишеш разни хахахаха бла бла да ти даде модератора едно предопреждение защото само ни тъпчеш труда. Ако найстина имаш опит давай дай някоя защита която пази от нещо или свой алгоритам който да ни изненада а не сега да псуваш а после да ползваш инфото от тука и да се прайш на важна клечна ако бъркам да ме извиняваш.
_________________
 
Вижте профила на потребителя Изпратете лично съобщение
on3sh0t
Напреднал

Напреднал


Репутация: -1    

Регистриран на: 12 Mar 2009
Мнения: 447


1038 FM

МнениеПуснато на: Mon Jun 07, 2010 19:52 pm    Заглавие: Отговорете с цитат

Извинявай, но на кого говориш, че не оспях да разбера Смях На мен или на потребителя, който писа по-горе.. Ако не говориш на мен добре Смях Ако говориш на мен пак добре Смях И така .. и двамата сте прави до някаде .. @mitko29 един код, трябва да е максимално добре написан, че да компенсира използването на ненеужни проверки, а да ти кажа чесно, малко хора пишат кода по такъв начин, че той да работи бързо. Преди 2 седмици бях на една конференция, за качествен програмен код. Като цяло се водеше дискусия, че един бързодействащ код, почти никога не е написан качествено, стигна се до извода, че php не предразполага писане на качествен код, и че рядко се намират хора, които го пишат хем добре, хем така, че да действа бързо. Нека поясня, казаха, че едното е за сметка на другото .. По бърз код -> По-малко проверки. Не можеш да се лишаваш от някоя важна проверка, за това правиш кода, колкото може по кратък (Това не е гаранция за бързина), и така го правиш колкото може по-некачествено написан. И нека си дойдем на думата.. гарантирам ти, че това, че ти "не си блъскаш кода с глупости", изобщо, и определено не е гаранция, че кода ти е бърз... Сигурен съм също така, че не пишеш и на ООП, което до голяма степен при големи проекти, усложнява работата, удължава кода, и то не малко, което съответно и ти забавя изпълнението .. Много сносно можем да си говорим тук за един добре написан код, който ще е бърз.. Не го приемай това като убида, просто "дискутираме" Смях И аз не пиша качествен код.. много често при неопитни програмисти, качественият код е за сметка на бързодействието. И пак казвам аз НЕ говоря от името на човек, който пише качествен и бърз код, аз говоря от името на човек, който си има понятие на теория, но не и голямо на практика.
 
Вижте профила на потребителя Изпратете лично съобщение
mitko29
BHOP PRO



Репутация: 12    

Регистриран на: 03 Aug 2008
Мнения: 1209
Местожителство: 100000 FM

15 FM

МнениеПуснато на: Tue Jun 08, 2010 9:43 am    Заглавие: Отговорете с цитат

on3sh0t написа:
И пак казвам аз НЕ говоря от името на човек, който пише качествен и бърз код, аз говоря от името на човек, който си има понятие на теория, но не и голямо на практика.

Какво чакаш още Ръкопляскане
_________________
 
Вижте профила на потребителя Изпратете лично съобщение
on3sh0t
Напреднал

Напреднал


Репутация: -1    

Регистриран на: 12 Mar 2009
Мнения: 447


1038 FM

МнениеПуснато на: Tue Jun 08, 2010 10:20 am    Заглавие: Отговорете с цитат

mitko29 написа:
on3sh0t написа:
И пак казвам аз НЕ говоря от името на човек, който пише качествен и бърз код, аз говоря от името на човек, който си има понятие на теория, но не и голямо на практика.

Какво чакаш още Ръкопляскане


Голям мързел съм.. при мисалта за ООП ми се гади Смях Не в такъв смисал, че ООП не струва, точно обратното, но за дапоченш да пишеш качествено на ООП, трябва наистина да си го схванал.. На мен лично вече ми е време дапочвам да го уча, тей като аз съм научил процедурното програмиране, и за да започна да се развивам, трябва и ООП да науча, но както казах мързи ме Смях Ако някой може да ме надъха... Див смях Див смях
 
Вижте профила на потребителя Изпратете лично съобщение
Ulquiorra
Новак

Новак


Репутация: 0    

Регистриран на: 06 May 2010
Мнения: 24


84 FM

МнениеПуснато на: Tue Jun 08, 2010 20:35 pm    Заглавие: Отговорете с цитат

Ол какво е това ООП ?
Гузно.. Гузно.. Гузно..
Яде ли се ?
_________________
 
Вижте профила на потребителя Изпратете лично съобщение
Създайте нова тема   Напишете отговор Страница 1 от 2

   FMFREE Форуми -> Програмиране Иди на страница 1, 2  Следваща  


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети