Автор работы: Пользователь скрыл имя, 18 Октября 2013 в 13:11, курс лекций
1. Особенности программирования для Web. Различия в программировании на стороне клиента и сервера. Инструменты и технологии программирования.
Есть два типа программирования в веб-приложениях: на стороне клиента и на стороне сервера.
Программирование на стороне клиента означает использование языка программирования, который будет выполняться в веб-браузере пользователя. Стандартным языком программирования на стороне клиента, на сегодняшний день, является JavaScript. JavaScript может быть включён в отдельные текстовые файлы, на которые ссылаются файлы HTML, или же вы можете вставить его прямо в HTML в специальные теги HTML — script теги. Когда веб-браузер пользователя встречает эти теги, он выполняет код JavaScript, содержащийся либо в тегах, либо в файлах.
Как уже говорилось, срок годности устанавливается в секундах относительно начала эпохи. В PHP существуют функции time и mktime для работы с датой и временем, позволяющие переводить текущее время в количество секунд с начала эпохи. Функция time просто переводит текущее системное время в количество секунд, прошедших с начала эпохи: time.
Синтаксис: time();
Усовершенствованным вариантом функции time является функция mktime: mktime.
==Удаление cookie==
Удалить cookie просто. Для этого надо вызвать функцию setcookie и передать ей имя того cookie, который подлежит удалению:
setcookie("name");
Другие установленные cookie при этом не удаляются.
==Проблемы безопасности, связанные с cookies==
Иногда в cookies приходится хранить конфиденциальные данные, и в этом случае разработчик должен позаботиться о том, чтобы информация хранящееся в cookie не была передана третьим лицам. Существует несколько методов защиты информации, хранящейся в cookie:
-установка области видимости cookies;
-шифрование;
-ограничение доступа для
-отправка cookies по защищенному запросу.
Наилучшим решением является комплексное применение всех этих способов.
=Установка области видимости cookie=
Поскольку, по умолчанию, доступ к cookie происходит из корневого каталога, это может создать "дыры" в системе защиты, так как cookies становятся доступными в любом подкаталоге этого каталога. Ограничить доступ к cookies для всех страниц, кроме расположенных в конкретном каталоге, к примеру, /web, можно следующим образом:
setcookie("name", $value, "/web/");
Однако и в этом случае, к примеру,
каталоги /web/index.php, /web1/page.html и т. д. будут
удовлетворять этому
setcookie("name", $value, "/web/index.php");
Однако и такой способ в полной
мере не решает проблему, так как
в этом случае доступ к информации,
содержащейся в cookie, может получить,
к примеру, скрипт /web/index.php-script/anti_
=Шифрование=
Применить шифрование к cookies можно разными способами.
=Ограничение доступа для
Для дополнительной безопасности, список доменов, имеющих доступ к cookies, должен быть ограничен. Это можно сделать при помощи следующего кода:
setcookie("name", $value, "/web/index.php", ".server.com");
При таком ограничении заданной
области видимости будут
=Отправка cookies по защищенному запросу=
Не является излишним для cookie, хранящему
секретные данные, разрешить отвечать
только на защищенные запросы HTTP, так
как в этом случае значительно
затрудняется перехват данных, которыми
обмениваются клиент и сервер. Для
обеспечения защищенного
setcookie("name", $value, time() + 600, "/web/", ".server.com", 1);
23. Язык SQL. Предложения манипулирования и выборки данных.
SQL (Structured Query Language) – структурированный язык запросов. Применяется для общения пользователей с РБД. SQL предоставляет пользователям простой понятный механизм доступа к данным, не связанный с разработкой алгоритмов и их реализацией на ЯП. Вместо указания как нужно действовать пользователь при помощи SQL показывает СУБД, что он хотел бы получить. СУБД анализирует текст запроса и самостоятельно определяет, как его выполнить.
Применяется для общения пользователей с РБД и состоит из 3 частей:
1. DDL (Data Definition Language) – язык описания данных. Предназначен для создания различных объектов БД (напр. таблицы)
Create, Alter (изменение структуры), Drop
2. DCL (Data Control Language) – язык управления данными
Grant – создание фиксирующей записи с правами
3. DML (Data Manipulation Language) – язык манипулирования
данными. Содержит операторы
Select, Insert, Delete, Update
==Общая хар-ка SQL==
ориентирован на работу с мн-вами, а не с отдел. записями. SQL предназначен для выполнения операций над таблицами, над данными в таблице. В SQL отсутствуют операторы услов. перехода, любые действия, кот. управляют ходом выполнения. SQL – язык запросов. Служит исключительно для работы с БД. SQL может выстраиваться в программу на ЯП.
==Достоинства SQL==
1. межплатформенная
2. наличие стандартов
3. поддержка ведущими
4. реляционная основа
5. высокоуровневая структура
6. возможность выполнения
7. возможность программного
8. возможность различного
9. полноценность языка для
10. поддержка архитектуры клиент-
11. поддержка корпоративных
12. расширяемость и поддержка
объектно-ориентированных
13. возможность доступа к данным в Интернете
14. интеграция с языком Java
15. промышленная инфраструктура
==МАНИПУЛИРОВАНИЕ ДАННЫМИ==
Манип. данными в БД производится с помощью команд языка DML (Data Manipulation Language), кот. содержит операторы для внесения изменений в содержимое таблиц.
INSERT Создает строку. Исп. подзапрос, можно вставлять строки, копируемые в табл. из другой табл. Этот вид вставки также называют командой ”INSERT с подзапросом”.
insert into {<базовая таблица>|<
UPDATE Обновление сущ. строк таблицы.
UPDATE {<базовая таблица>|<
DELETE Удаление сущ. строк таблицы. Кол-во удал. строк зависит от усл. WHERE. Когда фраза WHERE опущена, все строки удал.
delete from {<баз.табл.>/<представление>} [<фраза where>]
==ВЫБОРКА==
Выборка данных с помощью оператора select. Результатом выполнения явл. таблица.
Структура оператора
SELECT [ALL|DISTINCT] {*|<фраза Select>[,<фраза Select>]...}
FROM {<базовая таблица>|<
[, {<базовая таблица>|<
[WHERE <фраза Where>]
[GROUP BY <фраза Group> [HEAVING <фраза Heaving>]]
[ORDER BY <фраза Order>
SELECT - выбрать данные из указанных
столбцов и выполнить при
FROM - переводит из перечисленных таблиц, в которых расположены эти столбцы.
WHERE - где строки из указанных
таблиц должны удовлетворять
указанному перечню условий
GROUP BY - группируя по указанному
перечню столбцов с тем, чтобы
получить для каждой группы
единственное агрегированное
HEAVIN - получая в результате лишь
те группы, которые удовлетворяют
указанному перечню условий
ORDER BY - отсортированные по заданным критериям.
24. Безопасное
программирование на PHP. Виды атак.
Советы и рекомендации по
Виды атак:
1.include баг
Самая уязвимая точка, если в файле написано include ($file); а подключается файл $file = $_GET [‘file’];
include ($file); - так лучше не писать
Пользователь не должен видеть, какие файлы подключаются в другой файл.
2.межсайтовый скриптинг
htmlspecialchars (<строка>) –
позволяет вместо всех
3.Sql-инъекция
SELECT user, pass FROM users
WHERE user=”$_POST[‘us’]”
AND pass=”$_POST[‘ps’]”;
Например, если user=Delicious, pas=” or 1=1. С “ в пароле будут проблемы.
Ограничение для пароля: 10 символов.
Addslashes (<строка>) - экранирование спец. символов
Stripslashes (<строка>)
title = ‘$t’. Если $t=д’Артаньян, то надо использовать функцию Addslashes, иначе считается только д из $t.
Рекомендации:
1.Не создавать
2.Не делать пароль к БД совпадающим с паролем ftp.
3.Необходимо шифровать
все пароли при помощи
4.Необходимо следить за обновлениями ПО.
5.Не нужно давать
6.Необходима фильтрация всех форм, т.е. предварительная проверка средствами JavaScript (на стороне клиента), потом средствами PHP и т.д.