SlideShare a Scribd company logo
Web Security
Как да се защитим от SQL injection?
Какво е SQL injection?

   • С две думи, инжектиране на вече
     съществуващи заявки в база данни с SQL код.

   • С помоща на SQLi, атакуващият може да се
     сдобие с достъп до базата данни на WEB
     сървъра.
Как да се защитя?
Ето един случайно подбран от интернет PHP код.
Нека разгледаме кода:

include ("config.php");
правим връзка с базата данни



if ($_POST["enter"]) {
В превод, " ако е натиснат бутона с name='enter'
".
В случея, трябва да имаме HTML форма с
method="POST".
Ето форма, която примерно може да я сложите
над PHP кода:
$enter=$_POST["enter"];
Правиме промелива $enter с съдържание
$_POST['enter'];
Същото и за останалите променливи.

mysql_query ("UPDATE `table` SET
name='$name' WHERE id='$id'");
При таблица `table` променяме name с стойност
от променливата '$name', където id е равно на
променливата $id.
Би трябвало да ви изкара следната грешка:

Notice: Undefined index: enter in
C:localhostfile.php on line 3

Трябва да променим if ($_POST["enter"]) на if
(isset($_POST["enter"]))
Функцията isset(); проверява дали
$_POST['enter']; е установен.
$enter=$_POST["enter"];
Правиме промелива $enter с съдържание
$_POST['enter'];
Същото и за останалите променливи.

mysql_query ("UPDATE `table` SET
name='$name' WHERE id='$id'");
При таблица `table` променяме name с стойност
от променливата '$name', където id е равно на
променливата $id.
Нека да кажем, че файла с кодовете е file.php
Като го отворим трябва да ни излезнат 2 textbox-
а и един бутон.
Целта на файла е след като попълним формата
с ID и NAME да
промени името ($name) на въведеното ID ($id). И
всичко става след
натискане на бутона ($enter).
Проблема тук е, че примерно може да добавим в
textbox-a HTML или JavaScript
код, съвсем спокойно. Ако имаме файл където
се изкарват всички полета от
таблица `table` и има поле с JavaScript.
$enter=$_POST["enter"];
Правиме промелива $enter с съдържание
$_POST['enter'];
Същото и за останалите променливи.

mysql_query ("UPDATE `table` SET
name='$name' WHERE id='$id'");
При таблица `table` променяме name с стойност
от променливата '$name', където id е равно на
променливата $id.
Ето пример:
•   След като добавим този код в file.php и отидем в
    страницата където се показват
    всички полета, ще ни пренасочва към Google.com.
    За да предотвратим това трябва да направим следното:

•   $id = $_POST['id'];
    $name = $_POST['name'];

    ги заменяме със:

    $id = htmlspecialchars($_POST['id']);
    $name = htmlspecialchars($_POST['name']);

    htmlspecialchars(); — Преобразува специални знаци в
    HTML единици
Може да използваме и addslashes(); който
"ескейпва" кавичките,
както htmlspecialchars(); "ескейпва" HTML
символи.
В повечето случей, добрите отзиви са за
mysql_real_escape_string();
вмето addslashes(htmlspecialchars($var));

mysql_real_escape_string(); директно при
заявка се добавят черти, за да
се предотврати SQL инжекцията, но в записите
при базата данни не се показват
тези черти.
$enter=$_POST["enter"];
Правиме промелива $enter с съдържание
$_POST['enter'];
Същото и за останалите променливи.

mysql_query ("UPDATE `table` SET
name='$name' WHERE id='$id'");
При таблица `table` променяме name с стойност
от променливата '$name', където id е равно на
променливата $id.
• Има още варианти, един от тях е да се
  използва функцията preg_replace();
  ето ви пример:

 $newtext = preg_replace('/D/', '',
 $text);

 така ще премахнем всичко, което не е
 цифри или букви.

More Related Content

Viewers also liked

Prom memories 2012
Prom memories 2012Prom memories 2012
Prom memories 2012msmorales
 
Informativo 001
Informativo 001Informativo 001
Informativo 001
Nesar Yasin
 
Isabel morales slides for tl conf
Isabel morales   slides for tl confIsabel morales   slides for tl conf
Isabel morales slides for tl confmsmorales
 
Boston debrief
Boston debriefBoston debrief
Boston debrief
veda20
 
Educ 700 critical pedagogy
Educ 700 critical pedagogyEduc 700 critical pedagogy
Educ 700 critical pedagogymsmorales
 
3. tecnologia de captura de co2
3. tecnologia de captura de co23. tecnologia de captura de co2
3. tecnologia de captura de co2
Mario Molina
 
Vasiliev2007
Vasiliev2007Vasiliev2007
Vasiliev2007
Mario Molina
 
Dda presentation deliberating with struggling readers
Dda presentation   deliberating with struggling readersDda presentation   deliberating with struggling readers
Dda presentation deliberating with struggling readersmsmorales
 
Prom memories 2012
Prom memories 2012Prom memories 2012
Prom memories 2012msmorales
 
5 Tips for Those Considering Careers in Marketing
5 Tips for Those Considering Careers in Marketing5 Tips for Those Considering Careers in Marketing
5 Tips for Those Considering Careers in Marketing
bloghog25
 
New mba sem2_detailed_syllabus
New mba sem2_detailed_syllabusNew mba sem2_detailed_syllabus
New mba sem2_detailed_syllabus
Hetalbhai Contracter
 
Eucalipto
EucaliptoEucalipto
Eucalipto
Adier Velasquez
 
Dda presentation deliberating with struggling readers
Dda presentation   deliberating with struggling readersDda presentation   deliberating with struggling readers
Dda presentation deliberating with struggling readersmsmorales
 
Proposta administração associação pomar da lagoa
Proposta administração associação pomar da lagoaProposta administração associação pomar da lagoa
Proposta administração associação pomar da lagoa
Nesar Yasin
 
EDUC 524 Final
EDUC 524 FinalEDUC 524 Final
EDUC 524 Finalmsmorales
 
estructura de programación
estructura de programación estructura de programación
estructura de programación
Julio Santos
 

Viewers also liked (17)

Prom memories 2012
Prom memories 2012Prom memories 2012
Prom memories 2012
 
Informativo 001
Informativo 001Informativo 001
Informativo 001
 
Isabel morales slides for tl conf
Isabel morales   slides for tl confIsabel morales   slides for tl conf
Isabel morales slides for tl conf
 
Boston debrief
Boston debriefBoston debrief
Boston debrief
 
Educ 700 critical pedagogy
Educ 700 critical pedagogyEduc 700 critical pedagogy
Educ 700 critical pedagogy
 
3. tecnologia de captura de co2
3. tecnologia de captura de co23. tecnologia de captura de co2
3. tecnologia de captura de co2
 
Vasiliev2007
Vasiliev2007Vasiliev2007
Vasiliev2007
 
Dda presentation deliberating with struggling readers
Dda presentation   deliberating with struggling readersDda presentation   deliberating with struggling readers
Dda presentation deliberating with struggling readers
 
Prom memories 2012
Prom memories 2012Prom memories 2012
Prom memories 2012
 
Johnathon Lam
Johnathon LamJohnathon Lam
Johnathon Lam
 
5 Tips for Those Considering Careers in Marketing
5 Tips for Those Considering Careers in Marketing5 Tips for Those Considering Careers in Marketing
5 Tips for Those Considering Careers in Marketing
 
New mba sem2_detailed_syllabus
New mba sem2_detailed_syllabusNew mba sem2_detailed_syllabus
New mba sem2_detailed_syllabus
 
Eucalipto
EucaliptoEucalipto
Eucalipto
 
Dda presentation deliberating with struggling readers
Dda presentation   deliberating with struggling readersDda presentation   deliberating with struggling readers
Dda presentation deliberating with struggling readers
 
Proposta administração associação pomar da lagoa
Proposta administração associação pomar da lagoaProposta administração associação pomar da lagoa
Proposta administração associação pomar da lagoa
 
EDUC 524 Final
EDUC 524 FinalEDUC 524 Final
EDUC 524 Final
 
estructura de programación
estructura de programación estructura de programación
estructura de programación
 

Similar to Anti SQLi

B9 t9 db_my_sql
B9 t9 db_my_sqlB9 t9 db_my_sql
B9 t9 db_my_sql
Asiya Petrova
 
Web applications with Catalyst BG
Web applications with Catalyst BGWeb applications with Catalyst BG
Web applications with Catalyst BGsvilen.ivanov
 
Сигурност при разработката на WordPress разширения
Сигурност при разработката на WordPress разширенияСигурност при разработката на WordPress разширения
Сигурност при разработката на WordPress разширенияVeselin Nikolov
 
Чести проблеми в сигурността на уеб проектите
Чести проблеми в сигурността на уеб проектитеЧести проблеми в сигурността на уеб проектите
Чести проблеми в сигурността на уеб проектитеVeselin Nikolov
 
Java Script
Java ScriptJava Script
Java Script
Artist
 
20 podzajavki v select
20 podzajavki v select20 podzajavki v select
20 podzajavki v select
Ivan Peev
 
16 klauzi
16 klauzi16 klauzi
16 klauzi
Ivan Peev
 
ИнтеRESTни уеб услуги
ИнтеRESTни уеб услугиИнтеRESTни уеб услуги
ИнтеRESTни уеб услуги
svilen.ivanov
 
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLКурс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
DAVID Academy
 

Similar to Anti SQLi (10)

B9 t9 db_my_sql
B9 t9 db_my_sqlB9 t9 db_my_sql
B9 t9 db_my_sql
 
Web applications with Catalyst BG
Web applications with Catalyst BGWeb applications with Catalyst BG
Web applications with Catalyst BG
 
Сигурност при разработката на WordPress разширения
Сигурност при разработката на WordPress разширенияСигурност при разработката на WordPress разширения
Сигурност при разработката на WordPress разширения
 
5494 n nikolov_zashtita
5494 n nikolov_zashtita5494 n nikolov_zashtita
5494 n nikolov_zashtita
 
Чести проблеми в сигурността на уеб проектите
Чести проблеми в сигурността на уеб проектитеЧести проблеми в сигурността на уеб проектите
Чести проблеми в сигурността на уеб проектите
 
Java Script
Java ScriptJava Script
Java Script
 
20 podzajavki v select
20 podzajavki v select20 podzajavki v select
20 podzajavki v select
 
16 klauzi
16 klauzi16 klauzi
16 klauzi
 
ИнтеRESTни уеб услуги
ИнтеRESTни уеб услугиИнтеRESTни уеб услуги
ИнтеRESTни уеб услуги
 
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLКурс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
 

Anti SQLi

  • 1. Web Security Как да се защитим от SQL injection?
  • 2. Какво е SQL injection? • С две думи, инжектиране на вече съществуващи заявки в база данни с SQL код. • С помоща на SQLi, атакуващият може да се сдобие с достъп до базата данни на WEB сървъра.
  • 3. Как да се защитя? Ето един случайно подбран от интернет PHP код.
  • 4. Нека разгледаме кода: include ("config.php"); правим връзка с базата данни if ($_POST["enter"]) { В превод, " ако е натиснат бутона с name='enter' ". В случея, трябва да имаме HTML форма с method="POST".
  • 5. Ето форма, която примерно може да я сложите над PHP кода:
  • 6. $enter=$_POST["enter"]; Правиме промелива $enter с съдържание $_POST['enter']; Същото и за останалите променливи. mysql_query ("UPDATE `table` SET name='$name' WHERE id='$id'"); При таблица `table` променяме name с стойност от променливата '$name', където id е равно на променливата $id.
  • 7. Би трябвало да ви изкара следната грешка: Notice: Undefined index: enter in C:localhostfile.php on line 3 Трябва да променим if ($_POST["enter"]) на if (isset($_POST["enter"])) Функцията isset(); проверява дали $_POST['enter']; е установен.
  • 8. $enter=$_POST["enter"]; Правиме промелива $enter с съдържание $_POST['enter']; Същото и за останалите променливи. mysql_query ("UPDATE `table` SET name='$name' WHERE id='$id'"); При таблица `table` променяме name с стойност от променливата '$name', където id е равно на променливата $id.
  • 9. Нека да кажем, че файла с кодовете е file.php Като го отворим трябва да ни излезнат 2 textbox- а и един бутон. Целта на файла е след като попълним формата с ID и NAME да промени името ($name) на въведеното ID ($id). И всичко става след натискане на бутона ($enter). Проблема тук е, че примерно може да добавим в textbox-a HTML или JavaScript код, съвсем спокойно. Ако имаме файл където се изкарват всички полета от таблица `table` и има поле с JavaScript.
  • 10. $enter=$_POST["enter"]; Правиме промелива $enter с съдържание $_POST['enter']; Същото и за останалите променливи. mysql_query ("UPDATE `table` SET name='$name' WHERE id='$id'"); При таблица `table` променяме name с стойност от променливата '$name', където id е равно на променливата $id.
  • 12. След като добавим този код в file.php и отидем в страницата където се показват всички полета, ще ни пренасочва към Google.com. За да предотвратим това трябва да направим следното: • $id = $_POST['id']; $name = $_POST['name']; ги заменяме със: $id = htmlspecialchars($_POST['id']); $name = htmlspecialchars($_POST['name']); htmlspecialchars(); — Преобразува специални знаци в HTML единици
  • 13. Може да използваме и addslashes(); който "ескейпва" кавичките, както htmlspecialchars(); "ескейпва" HTML символи. В повечето случей, добрите отзиви са за mysql_real_escape_string(); вмето addslashes(htmlspecialchars($var)); mysql_real_escape_string(); директно при заявка се добавят черти, за да се предотврати SQL инжекцията, но в записите при базата данни не се показват тези черти.
  • 14. $enter=$_POST["enter"]; Правиме промелива $enter с съдържание $_POST['enter']; Същото и за останалите променливи. mysql_query ("UPDATE `table` SET name='$name' WHERE id='$id'"); При таблица `table` променяме name с стойност от променливата '$name', където id е равно на променливата $id.
  • 15. • Има още варианти, един от тях е да се използва функцията preg_replace(); ето ви пример: $newtext = preg_replace('/D/', '', $text); така ще премахнем всичко, което не е цифри или букви.