REST (Representational State Transfer) е архитектурен стил за изграждане на лесни, разбираеми
и мащабируеми уеб услуги (web services). За мнозина разработчици уеб услугите предизвикват
неприятни (меко казано) чувства1. Това е така, защото тежките решения за предоставяне на
услуги в уеб (например SOAP) са неудобни и сложни за прилагане и изискват допълнително
разучаване на множество други технологии. REST се базира на фундаментите на уеб: HTTP, URI
и XHTML – и може да да се реализира с всеки език за програмиране на уеб или платформа.
Аудиторията ще бъде запозната с помощта на примери с основните принципи за изграждане
на услуги чрез методологията на REST. Ще бъдат подчертани предимствата и възможностите на
услугите. Ще бъде показано защо този стил набира все по-голяма популярност и защо големи
компании като Amazon, Ebay, Google предоставят главно REST-базирани услуги. Ще бъде
демонстрирано AJAX приложение като клиент на REST уеб услуга предоставена от Ruby on Rails
и Java Restlet приложение.
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLDAVID Academy
Занятие №3 на курса по информационни технологии (2013) провеждан от ДАВИД академия в ПМГ "Никола Обрешков" - Казанлък. Включва темите:
- ADO.NET
- LINQ to SQL
2. Какво е SQL injection?
• С две думи, инжектиране на вече
съществуващи заявки в база данни с SQL код.
• С помоща на SQLi, атакуващият може да се
сдобие с достъп до базата данни на WEB
сървъра.
3. Как да се защитя?
Ето един случайно подбран от интернет PHP код.
4. Нека разгледаме кода:
include ("config.php");
правим връзка с базата данни
if ($_POST["enter"]) {
В превод, " ако е натиснат бутона с name='enter'
".
В случея, трябва да имаме HTML форма с
method="POST".
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);
така ще премахнем всичко, което не е
цифри или букви.