Регистрирайте се безплатно, за да използвате услугите на сайта! | Вход
Начало Новини ИТ Работа Форум Видео Уроци Скриптове WiFi точки MyLinks Mytech Още


Нова тема
Какво е SQL Injection ?
Тази тема е погледната 1151 пъти
Добави темата към любими | Принтирай темата | Нова тема 
Публикувано на: 29.02.2008 08:50
napster
Император

Модератор

Мнения: (726)

В последно време се занимавам с SQL понеже незнам дали знам поне някаква теория реших да напиша статия, според мен (по четената теория)що е то SQL Injection и как всъщност работи и да проверя дали не съм в грешка на нещата.

ЕТО:
1.    браузъра изпраща HTTP Request към сървъра, на който се намира желания сайт
2.    на сървъра тази заявка се обработва от HTTP сървъра ( който може да бъде Apache, IIS и т.н ). Ако заявката е към статичен HTML файл, то сървъра направо връща информация на браузъра. Ако обаче заявката е за динамична страница, която трябва да се генерира в момента ( а това са близо 95% от всички страници напоследък ) то:
3.    HTTP сървъра извиква скриптовият интерпретатор - най-често това e PHP, но също така може да е ColdFusion, ASP, JSP и т.н.За да е максимално лесно и просто да се използва какъвто и да е език за програмиране и съответно интерпретатор е стандартизиран интерфейса между сървъра и интерпретатора - т. нар. CGI. Този стандарт също така описва начините за предаване на различни параметри към скриптовете, които трябва да генерират страницата - въщност точно това се случва с цялата информация ( и не само с нея ), която пишете по форми и полето в уеб-страниците - тя се изпраща като параметри на някой такъв скрипт и в резултат скрипта по някакъв начин ги обработва - записва, проверява и т.н. В много случаи обаче има нужда да се работи с големи обеми информация. Тогава повечето езици за програмиране не са най-удобното и производително решение, а се изпраща заявка към:
4.    База данни. Всъщност по-пълното име трябва да е “сървър за управление на релационна база данни“. Сложничко, нали ? Най-често използваните сървъри при уебсайтовете са MySQL, но същата функция може да се изпълнява и от Oracle, MSSQL сървър, PostreSQL. Забелязвате ли повтарящото се “SQL” ? Това е името на стандартния протокол, с който можете да искате определена информация от базата данни ( например - “покажи ми всички потребители, родени след 1980 г.” ). Та PHP скрипта използва SQL, за да извлече нужната му информация от базата данни. Конкретната SQL заявка се съставя в зависимост от това, каква информация е необходима ( най-често с използването на същите онези параметри, предадени на PHP интерпретатора. ).
След като SQL сървъра върне необходимата информация, скриптовия интерпретатор я обработва, генерира HTML страница, която бива изпратена от HTTP сървъра на браузера на клиента, изпратил заявката.

Изглежда сложно и бавно, но обикновенно подобна заявка отнема милисекунди и вие на ден генерирате поне няколкостотин ( само отварянето на тази страница е завъртяло описаният цикъл няколко пъти ).
SQL заявката, която ще изтрие цялата информация от дадена таблица в базата данни е “DROP TABLE <DBNAME>”.

МОЛЯ АДМИНИСТРАТОРА ДА НЕ МИ СЕ КАРА!!! Просто питам!

Така ли е или съм в грешка?
БЛАГОДАРЯ ПРЕДВАРИТЕЛНО!!!!!!!


 
Това мнение е редактирано от napster на 29.02.2008 08:50
---------------------------
Потребител от: 25.02.08 | Всички уроци от napster | Всички скриптове от napster

Шизофрения е когато в един форум общуваш
сам със себе си под три различни ника!!!
http://www.hidrostroitel.com/
http://scullboxteam.org/



напиши eMail напиши лично съобщение виж профила на napster
Публикувано на: 29.02.2008 11:21
PureEvil
Самурай

Мнения: (1803)

?!?#
И какво е това?
Къде се говори за SQL Injection?
Каква е идеята на този пост?
И какво питаш та администратора ти се кара?


 
---------------------------
Потребител от: 17.02.05 | Всички уроци от PureEvil | Всички скриптове от PureEvil

Liberate Tu Temet Ex Inferis
напиши eMail напиши лично съобщение виж профила на PureEvil
Публикувано на: 29.02.2008 12:16
napster
Император

Модератор

Мнения: (726)

Общо: текста който съм дал - товали представлява SQL Injection? Никъде не се говори, все пак някъде трябваше да питам, защото при опита си да науча какво е, може някъде да съм допуснал грешка и да имам грешна представа! Знанията все пак трябва да са правилни! Идеята е да разбера дали съм с грешна представа за SQL Injection и дали след толкова четене все пак съм започнал малко да го разбирам!!!
Та молбата ми е да се прочете внимателно горния текст и ако може да ми се отговори на въпроса - "ТОВА ЛИ ПРЕДТАВЛЯВА" SQL Injection? като теория.


 
Това мнение е редактирано от napster на 29.02.2008 12:41
---------------------------
Потребител от: 25.02.08 | Всички уроци от napster | Всички скриптове от napster

Шизофрения е когато в един форум общуваш
сам със себе си под три различни ника!!!
http://www.hidrostroitel.com/
http://scullboxteam.org/



напиши eMail напиши лично съобщение виж профила на napster
Публикувано на: 29.02.2008 14:24
PureEvil
Самурай

Мнения: (1803)

НЕ.
SQL Injection => става дума за нещо при заявките към ДБ-то.
Примерно при MySQL ' е специален символ.
Ако ми позволиш на мен като потребител да го ползвам в данни коото се подават към SQL сървъра значи има SQL Injection.
Има хиляди статии по въпроса и то на български.

Теорията примерно може да се формулира като:
възможност за изпълняване на SQL код от потребителя, без разрешението на разработчика.


 
Това мнение е редактирано от PureEvil на 29.02.2008 14:25
---------------------------
Потребител от: 17.02.05 | Всички уроци от PureEvil | Всички скриптове от PureEvil

Liberate Tu Temet Ex Inferis
напиши eMail напиши лично съобщение виж профила на PureEvil
Публикувано на: 29.02.2008 15:10
napster
Император

Модератор

Мнения: (726)

ОК. Наистина става въпрос за заявките, но не бях сигурен че е така и очевидно не съм разбрал много добре SQL Injection. Добре, а може ли да се правят заявки и по друг начин, освен този? А къде, ако мога да попитам, мога да ги намеря тези статий на български, за да ги попрехвърля малко (да ги прочета)? И още нещо: "възможност за изпълняване на SQL код от потребителя, без разрешението на разработчика"Както каза - А има ли вероятност разработчика да е предотвратил предварително тази възможност за заявка? 


 
Това мнение е редактирано от napster на 29.02.2008 15:14
---------------------------
Потребител от: 25.02.08 | Всички уроци от napster | Всички скриптове от napster

Шизофрения е когато в един форум общуваш
сам със себе си под три различни ника!!!
http://www.hidrostroitel.com/
http://scullboxteam.org/



напиши eMail напиши лично съобщение виж профила на napster
Публикувано на: 29.02.2008 16:03
PureEvil
Самурай

Мнения: (1803)

Статий не знам кой е.
Виж ако питаш за статии: google.bg или по хилядите сайтове в българското уеб пространсотво с уроци.


 
---------------------------
Потребител от: 17.02.05 | Всички уроци от PureEvil | Всички скриптове от PureEvil

Liberate Tu Temet Ex Inferis
напиши eMail напиши лично съобщение виж профила на PureEvil
Публикувано на: 29.02.2008 16:06
napster
Император

Модератор

Мнения: (726)

OK.


 
---------------------------
Потребител от: 25.02.08 | Всички уроци от napster | Всички скриптове от napster

Шизофрения е когато в един форум общуваш
сам със себе си под три различни ника!!!
http://www.hidrostroitel.com/
http://scullboxteam.org/



напиши eMail напиши лично съобщение виж профила на napster
Публикувано на: 29.02.2008 22:01
zipopro
Шогун

Мнения: (762)

Цитат от napster666@29.02.2008 15:10:
ОК. Наистина става въпрос за заявките, но не бях сигурен че е така и очевидно не съм разбрал много добре SQL Injection. Добре, а може ли да се правят заявки и по друг начин, освен този? А къде, ако мога да попитам, мога да ги намеря тези статий на български, за да ги попрехвърля малко (да ги прочета)? И още нещо: "възможност за изпълняване на SQL код от потребителя, без разрешението на разработчика"Както каза - А има ли вероятност разработчика да е предотвратил предварително тази възможност за заявка? 
SQL инжекциите са точно това! Ако не са ти защитени база данните(заявките) един потребител набарал съответното поле може данаправи ВСИЧКО с таблицата, дори да я изтрие! Виж си гугъл има на БГ, ЕН, а бе на къвто и да е език:
ЦЯЛА ЗЛАТНА МИНА:
http://forums.bgdev.org/index.php?showtopic=14641
http://insecurebg.org/viewtopic.php?t=44&sid=57c6adf79a29f188e8cfb55a64cb409e
http://en.wikipedia.org/wiki/SQL_injection
http://www.unixwiz.net/techtips/sql-injection.html

Има да ги четеш 1 ден... Готов си!


 
---------------------------
Потребител от: 20.12.06 | Всички уроци от zipopro | Всички скриптове от zipopro

Лъчезар Петров Лечев - 14 - Стара Загора - Уеб Програмист
Винчета, болчета гайкии...!
напиши eMail напиши лично съобщение виж профила на zipopro
Публикувано на: 02.03.2008 18:33
napster
Император

Модератор

Мнения: (726)

Много ти благодаря за отговора, въпреки че тези от Wikipediq съм ги чел, но нищо - щом несъм ги разбрал пак ше ги прочета!!!


 
---------------------------
Потребител от: 25.02.08 | Всички уроци от napster | Всички скриптове от napster

Шизофрения е когато в един форум общуваш
сам със себе си под три различни ника!!!
http://www.hidrostroitel.com/
http://scullboxteam.org/



напиши eMail напиши лично съобщение виж профила на napster
Публикувано на: 13.05.2008 10:38
Filip_n
Калфа

Мнения: (8)

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


 
---------------------------
Потребител от: 15.02.08 | Всички уроци от Filip_n | Всички скриптове от Filip_n
напиши eMail напиши лично съобщение виж профила на Filip_n
 1 посетител чете тази тема (0 потребители и 1 гост)  
Активни потребители: ---
   




mytech.bg © 2004 - 2009 | Контакти | За реклама