SlideShare a Scribd company logo
1 of 18
Сигурност на PHPуеб приложения PHP Web Application Security
1. Cross Site Scripting (XSS) 2. SQL Injection 3. Malicious File Execution Топ 10 уязвимости приуеб приложенията Open Web Application Security Project http://www.owasp.org
4. Insecure Direct Object Reference 5. Cross Site Request Forgery (CSRF) 6. Information Leakage and Improper Error Handling 7. Broken Authentication and Session Management 8. Insecure Cryptographic Storage 9. Insecure Communications 10. Failure to Restrict URL Access Топ уязвимости при уеб приложенията
Какво може да доведе до XSS атака?Уеб приложение използва данни предоставени от потребителя, без да ги валидира или филтрира. До какво може да доведе една XSS атака?Изпълнение на нежелани скриптове в браузъра на потребителя - жертва на атаката. Кои видове уеб приложения са засегнати?Всички, които визуализират динамично съдържание предоставено от потребителя. Cross Site Scripting (XSS)
Non-persistent (Reflected)Когато данни, предоставени от уеб клиент (най-често под формата на параметри в HTTP заявка), се визуализират директно в браузъра на потребителя. Persistent (Stored)Когато данни, предоставени от потребителя, се съхраняват на сървъра и се използват за генериране на динамични страници без да се филтрират. DOM BasedИзпълняват се изцяло от страна на клиента. Когато JavaScript код използва директно данни от DOM обекти, като document.location. Видове XSS атаки
<form action="comment.php" method="POST">Име: <input type="text" name="name" />Коментар: <textarea name="comment"></textarea>  <input type="submit" value="Добави коментара" /></form> <?php  echo "<div class='comment'>  echo "  <p>$name написа:</p>";  echo "  <blockquote>$comment</blockquote>";  echp "</div>";?> Пример
Валидиране на входните данни 	Всички входни данни трябва да се проверяват за коректност – тип, формат и т.н. <?php if( isValidName($name) ) { … }?> Филтриране на изходните данни Всички изходни данни трябва да се филтрират за специални символи преди да се визуализират. <?phpechohtmlentities( $comment ); ?> Как да се предпазим?
Какво може да доведе до SQL инжекция?Изпълнение на SQL заявки, които се конструират динамично с входни данни без валидация. До какво може да доведе една SQL инжекция?Неправомерен достъп и модификация на данни. Неправомерна автентикация и оторизация и др. Кои видове уеб приложения са засегнати?Всички, които изпълняват динамичногенерирани заявки. SQL Injection
Форма за вход в сайт, чрез която потребителят въвежда потребителско име и парола: <form action="login.php" method="POST">Потребител: <input type="text" name="username" />Парола: <input type="text" name="password" />  <input type="submit" value="Вход" /></form>  Пример
Заявка, която търси потребител с въведените име и парола: <?php$username = $_POST['username'];$password = md5($_POST['password']);$sql = "SELECT COUNT(id) FROM users WHERE “;$sql.= "username='$username'";  $sql.= "AND password='$password'";?> Пример
Валидиране на входните данни 	Всички входни данни трябва да се проверяват за коректност – тип, формат и т.н. <?php if( isValidUsername($username) ) { … }?> Филтриране нa данните, участващи в заявки Всички данни, които участват при конструирането за заявки, трябва да се филтрират, като се премахнат специалните за SQL символи. mysql_real_escape_string($_POST['username']);  Как да се предпазим?
Какво може да доведе до атаката?Най-често възможност за качване на файлове от потребителя – снимки, документи и т.н. До какво може да доведе подобна атака?Неправомерното изпълнение на файлове дава на атакуващия почти неограничени възможности за злоупотреба. Кои видове уеб приложения са засегнати?Всички, които приемат файлове качвани от потребителя. Malicious File Execution
Форма, чрез която потребителят може да качиизображение в jpg формат: <form action="upload.php" method="POST" enctype="multipart/form-data">  Изберете изображение:  <input type="file" name="picture" /><input type="submit" value="Качване" /></form> Пример
Скрипт, който проверява и записва изображението: <?php$picture = $_FILES['picture'];$filename = "pictures/" . basename($picture['name']);if($picture['type'] != "image/jpg") {echo "Невалиден формат! Моля, опитайте отново.";exit; } else {move_uploaded_file($picture['tmp_name'],$filename);}?>  Пример
Съхраняване извън публичната директория 	Когато файловете се съхраняват извън публичната директория, те не са достъпни и атакуващият няма да има възможност да изпълни тяхното съдържание. Преименуване на файловете Файлове да се преименуват при тяхното качване, така че атакуващият да не знае под какво име са записани.  <?php  $picture = $_FILES['picture'];$picture_info = getimagesize($picture['tmp_name']);$filename = "../pictures/" . time() . ".jpg");… ?>  Как да се предпазим?
PHP Security Scanner http://sourceforge.net/projects/securityscanner/ Spike PHP Security Audit http://sourceforge.net/projects/phpsecaudit/ PIXY http://pixybox.seclab.tuwien.ac.at/pixy/ Софтуер за  автоматично тестване сигурността на PHP приложения Софтуерът за автоматично тестване не може да гарантира сигурността на едно PHP приложение, той е само допълнително средство.
Secure file upload in PHP web applicationshttp://www.scanit.be/uploads/php-file-upload.pdf OWASP Top 10 – 2010: The ten most criticalweb application security riskshttp://owasptop10.googlecode.com/files/OWASP Top 10 - 2010.pdf SQL Injection Attacks by Examplehttp://unixwiz.net/techtips/sql-injection.html PHP and the OWASP Top Ten Security Vulnerabiliteshttp://www.sklar.com/page/article/owasp-top-ten Полезни връзки
PHP Security Manualhttp://us3.php.net/manual/en/security.php Cross Site Scripting (XSS) Cheat Sheethttp://ha.ckers.org/xss.html Improving web application securityhttp://www.cgisecurity.com/lib/Threats_Countermeasures.pdf PHP Security Guidehttp://shiflett.org/php-security.pdf A Guide to Building Secure Web Applications and Serviceshttp://prdownloads.sourceforge.net/owasp/OWASPGuide2.0.1.pdf Полезни връзки

More Related Content

Similar to PHP Security

Безмилостно тестване на уеб приложения със Selenium
Безмилостно тестване на уеб приложения със SeleniumБезмилостно тестване на уеб приложения със Selenium
Безмилостно тестване на уеб приложения със Selenium
svilen.ivanov
 
ИнтеRESTни уеб услуги
ИнтеRESTни уеб услугиИнтеRESTни уеб услуги
ИнтеRESTни уеб услуги
svilen.ivanov
 
Защита при създаване на Dot net приложения в интернет
Защита при създаване на Dot net приложения в интернетЗащита при създаване на Dot net приложения в интернет
Защита при създаване на Dot net приложения в интернет
Monika Petrova
 
Api автентификация и безопасност и защита на web
Api автентификация и безопасност и защита на webApi автентификация и безопасност и защита на web
Api автентификация и безопасност и защита на web
Poli Petkova
 
безопасност и защита на Web приложения
безопасност и защита на Web  приложениябезопасност и защита на Web  приложения
безопасност и защита на Web приложения
karizka3
 
Php sec referat
Php sec referatPhp sec referat
Php sec referat
Dido_mn
 
Защита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в ИнтернетЗащита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в Интернет
eismail
 
Сигурност и права за достъп в уеб приложения изработени с работната рамка Yii
Сигурност и права за достъп в уеб приложения изработени с работната рамка YiiСигурност и права за достъп в уеб приложения изработени с работната рамка Yii
Сигурност и права за достъп в уеб приложения изработени с работната рамка Yii
Ilko Kacharov
 

Similar to PHP Security (20)

Безмилостно тестване на уеб приложения със Selenium
Безмилостно тестване на уеб приложения със SeleniumБезмилостно тестване на уеб приложения със Selenium
Безмилостно тестване на уеб приложения със Selenium
 
Bezopastnost i zashtita na web priolojeniq
Bezopastnost i zashtita na web priolojeniqBezopastnost i zashtita na web priolojeniq
Bezopastnost i zashtita na web priolojeniq
 
ИнтеRESTни уеб услуги
ИнтеRESTни уеб услугиИнтеRESTни уеб услуги
ИнтеRESTни уеб услуги
 
Защита при създаване на Dot net приложения в интернет
Защита при създаване на Dot net приложения в интернетЗащита при създаване на Dot net приложения в интернет
Защита при създаване на Dot net приложения в интернет
 
Api автентификация и безопасност и защита на web
Api автентификация и безопасност и защита на webApi автентификация и безопасност и защита на web
Api автентификация и безопасност и защита на web
 
Защита при създаване на Java приложения в интернет
Защита при създаване на  Java приложения в интернетЗащита при създаване на  Java приложения в интернет
Защита при създаване на Java приложения в интернет
 
Kursova 116679
Kursova 116679Kursova 116679
Kursova 116679
 
Автоматизирано функционално тестване на уеб приложения със Selenium
Автоматизирано функционално тестване на уеб приложения със SeleniumАвтоматизирано функционално тестване на уеб приложения със Selenium
Автоматизирано функционално тестване на уеб приложения със Selenium
 
API Authentication
API AuthenticationAPI Authentication
API Authentication
 
безопасност и защита на Web приложения
безопасност и защита на Web  приложениябезопасност и защита на Web  приложения
безопасност и защита на Web приложения
 
Bezopasnost i za6tita_na_web_prolojenia
Bezopasnost i za6tita_na_web_prolojeniaBezopasnost i za6tita_na_web_prolojenia
Bezopasnost i za6tita_na_web_prolojenia
 
Php sec referat
Php sec referatPhp sec referat
Php sec referat
 
Защита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в ИнтернетЗащита при създаване на PHP-приложения в Интернет
Защита при създаване на PHP-приложения в Интернет
 
WordPress Security
WordPress SecurityWordPress Security
WordPress Security
 
Drupal security lecture
Drupal security lectureDrupal security lecture
Drupal security lecture
 
Защита при създаване на java прил.в интернет
Защита при създаване на java прил.в интернетЗащита при създаване на java прил.в интернет
Защита при създаване на java прил.в интернет
 
PHP Security
PHP SecurityPHP Security
PHP Security
 
Web Applications Security
Web Applications Security Web Applications Security
Web Applications Security
 
Drupal Security
Drupal SecurityDrupal Security
Drupal Security
 
Сигурност и права за достъп в уеб приложения изработени с работната рамка Yii
Сигурност и права за достъп в уеб приложения изработени с работната рамка YiiСигурност и права за достъп в уеб приложения изработени с работната рамка Yii
Сигурност и права за достъп в уеб приложения изработени с работната рамка Yii
 

PHP Security

  • 1. Сигурност на PHPуеб приложения PHP Web Application Security
  • 2. 1. Cross Site Scripting (XSS) 2. SQL Injection 3. Malicious File Execution Топ 10 уязвимости приуеб приложенията Open Web Application Security Project http://www.owasp.org
  • 3. 4. Insecure Direct Object Reference 5. Cross Site Request Forgery (CSRF) 6. Information Leakage and Improper Error Handling 7. Broken Authentication and Session Management 8. Insecure Cryptographic Storage 9. Insecure Communications 10. Failure to Restrict URL Access Топ уязвимости при уеб приложенията
  • 4. Какво може да доведе до XSS атака?Уеб приложение използва данни предоставени от потребителя, без да ги валидира или филтрира. До какво може да доведе една XSS атака?Изпълнение на нежелани скриптове в браузъра на потребителя - жертва на атаката. Кои видове уеб приложения са засегнати?Всички, които визуализират динамично съдържание предоставено от потребителя. Cross Site Scripting (XSS)
  • 5. Non-persistent (Reflected)Когато данни, предоставени от уеб клиент (най-често под формата на параметри в HTTP заявка), се визуализират директно в браузъра на потребителя. Persistent (Stored)Когато данни, предоставени от потребителя, се съхраняват на сървъра и се използват за генериране на динамични страници без да се филтрират. DOM BasedИзпълняват се изцяло от страна на клиента. Когато JavaScript код използва директно данни от DOM обекти, като document.location. Видове XSS атаки
  • 6. <form action="comment.php" method="POST">Име: <input type="text" name="name" />Коментар: <textarea name="comment"></textarea> <input type="submit" value="Добави коментара" /></form> <?php echo "<div class='comment'> echo " <p>$name написа:</p>"; echo " <blockquote>$comment</blockquote>"; echp "</div>";?> Пример
  • 7. Валидиране на входните данни Всички входни данни трябва да се проверяват за коректност – тип, формат и т.н. <?php if( isValidName($name) ) { … }?> Филтриране на изходните данни Всички изходни данни трябва да се филтрират за специални символи преди да се визуализират. <?phpechohtmlentities( $comment ); ?> Как да се предпазим?
  • 8. Какво може да доведе до SQL инжекция?Изпълнение на SQL заявки, които се конструират динамично с входни данни без валидация. До какво може да доведе една SQL инжекция?Неправомерен достъп и модификация на данни. Неправомерна автентикация и оторизация и др. Кои видове уеб приложения са засегнати?Всички, които изпълняват динамичногенерирани заявки. SQL Injection
  • 9. Форма за вход в сайт, чрез която потребителят въвежда потребителско име и парола: <form action="login.php" method="POST">Потребител: <input type="text" name="username" />Парола: <input type="text" name="password" /> <input type="submit" value="Вход" /></form> Пример
  • 10. Заявка, която търси потребител с въведените име и парола: <?php$username = $_POST['username'];$password = md5($_POST['password']);$sql = "SELECT COUNT(id) FROM users WHERE “;$sql.= "username='$username'"; $sql.= "AND password='$password'";?> Пример
  • 11. Валидиране на входните данни Всички входни данни трябва да се проверяват за коректност – тип, формат и т.н. <?php if( isValidUsername($username) ) { … }?> Филтриране нa данните, участващи в заявки Всички данни, които участват при конструирането за заявки, трябва да се филтрират, като се премахнат специалните за SQL символи. mysql_real_escape_string($_POST['username']); Как да се предпазим?
  • 12. Какво може да доведе до атаката?Най-често възможност за качване на файлове от потребителя – снимки, документи и т.н. До какво може да доведе подобна атака?Неправомерното изпълнение на файлове дава на атакуващия почти неограничени възможности за злоупотреба. Кои видове уеб приложения са засегнати?Всички, които приемат файлове качвани от потребителя. Malicious File Execution
  • 13. Форма, чрез която потребителят може да качиизображение в jpg формат: <form action="upload.php" method="POST" enctype="multipart/form-data"> Изберете изображение: <input type="file" name="picture" /><input type="submit" value="Качване" /></form> Пример
  • 14. Скрипт, който проверява и записва изображението: <?php$picture = $_FILES['picture'];$filename = "pictures/" . basename($picture['name']);if($picture['type'] != "image/jpg") {echo "Невалиден формат! Моля, опитайте отново.";exit; } else {move_uploaded_file($picture['tmp_name'],$filename);}?> Пример
  • 15. Съхраняване извън публичната директория Когато файловете се съхраняват извън публичната директория, те не са достъпни и атакуващият няма да има възможност да изпълни тяхното съдържание. Преименуване на файловете Файлове да се преименуват при тяхното качване, така че атакуващият да не знае под какво име са записани. <?php $picture = $_FILES['picture'];$picture_info = getimagesize($picture['tmp_name']);$filename = "../pictures/" . time() . ".jpg");… ?> Как да се предпазим?
  • 16. PHP Security Scanner http://sourceforge.net/projects/securityscanner/ Spike PHP Security Audit http://sourceforge.net/projects/phpsecaudit/ PIXY http://pixybox.seclab.tuwien.ac.at/pixy/ Софтуер за автоматично тестване сигурността на PHP приложения Софтуерът за автоматично тестване не може да гарантира сигурността на едно PHP приложение, той е само допълнително средство.
  • 17. Secure file upload in PHP web applicationshttp://www.scanit.be/uploads/php-file-upload.pdf OWASP Top 10 – 2010: The ten most criticalweb application security riskshttp://owasptop10.googlecode.com/files/OWASP Top 10 - 2010.pdf SQL Injection Attacks by Examplehttp://unixwiz.net/techtips/sql-injection.html PHP and the OWASP Top Ten Security Vulnerabiliteshttp://www.sklar.com/page/article/owasp-top-ten Полезни връзки
  • 18. PHP Security Manualhttp://us3.php.net/manual/en/security.php Cross Site Scripting (XSS) Cheat Sheethttp://ha.ckers.org/xss.html Improving web application securityhttp://www.cgisecurity.com/lib/Threats_Countermeasures.pdf PHP Security Guidehttp://shiflett.org/php-security.pdf A Guide to Building Secure Web Applications and Serviceshttp://prdownloads.sourceforge.net/owasp/OWASPGuide2.0.1.pdf Полезни връзки