PHP Web Application Security
1. Cross Site Scripting (XSS) 2. SQL Injection 3. Malicious File Execution Open Web Application Security Project
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 атака? Изпълнение на нежелани скриптове в браузъра на потребителя - жертва на атаката. Кои видове уеб приложения са засегнати? Всички, които визуализират динамично съдържание предоставено от потребителя.
Non-persistent (Reflected) Когато данни, предоставени от уеб клиент (най-често под формата на параметри в HTTP заявка), се визуализират директно в браузъра на потребителя. Persistent (Stored) Когато данни, предоставени от потребителя, се съхраняват на сървъра и се използват за генериране на динамични страници без да се филтрират. DOM Based Изпълняват се изцяло от страна на клиента. Когато JavaScript код използва директно данни от DOM обекти, като document.location.
Име: Коментар: echo " $name написа: "; echo " $comment "; echp " "; ?>
Валидиране на входните данни Всички входни данни трябва да се проверяват за коректност – тип, формат и т.н. Филтриране на изходните данни Всички изходни данни трябва да се филтрират за специални символи преди да се визуализират.
Какво може да доведе до SQL инжекция? Изпълнение на SQL заявки, които се конструират динамично с входни данни без валидация. До какво може да доведе една SQL инжекция? Неправомерен достъп и модификация на данни. Неправомерна автентикация и оторизация и др. Кои видове уеб приложения са засегнати? Всички, които изпълняват динамично генерирани заявки.
Форма за вход в сайт, чрез която потребителят въвежда потребителско име и парола: Потребител: Парола:
Заявка, която търси потребител с въведените име и парола:
Валидиране на входните данни Всички входни данни трябва да се проверяват за коректност – тип, формат и т.н. Филтриране нa данните, участващи в заявки Всички данни, които участват при конструирането за заявки, трябва да се филтрират, като се премахнат специалните за SQL символи. mysql_real_escape_string($_POST['username']);
Какво може да доведе до атаката? Най-често възможност за качване на файлове от потребителя – снимки, документи и т.н. До какво може да доведе подобна атака? Неправомерното изпълнение на файлове дава на атакуващия почти неограничени възможности за злоупотреба. Кои видове уеб приложения са засегнати? Всички, които приемат файлове качвани от потребителя.
Форма, чрез която потребителят може да качи изображение в jpg формат: Изберете изображение:
Скрипт, който проверява и записва изображението:
Съхраняване извън публичната директория Когато файловете се съхраняват извън публичната директория, те не са достъпни и атакуващият няма да има възможност да изпълни тяхното съдържание. Преименуване на файловете Файлове да се преименуват при тяхното качване, така че атакуващият да не знае под какво име са записани.
PHP Security Scanner Spike PHP Security Audit PIXY Софтуерът за автоматично тестване не може да гарантира сигурността на едно PHP приложение, той е само допълнително средство.
Secure file upload in PHP web applications OWASP Top 10 – 2010: The ten most critical web application security risks Top pdf Top pdf SQL Injection Attacks by Example PHP and the OWASP Top Ten Security Vulnerabilites
PHP Security Manual Cross Site Scripting (XSS) Cheat Sheet Improving web application security PHP Security Guide A Guide to Building Secure Web Applications and Services