Лекции по "Программированию"

Автор работы: Пользователь скрыл имя, 18 Октября 2013 в 13:11, курс лекций

Краткое описание

1. Особенности программирования для Web. Различия в программировании на стороне клиента и сервера. Инструменты и технологии программирования.
Есть два типа программирования в веб-приложениях: на стороне клиента и на стороне сервера.

Программирование на стороне клиента означает использование языка программирования, который будет выполняться в веб-браузере пользователя. Стандартным языком программирования на стороне клиента, на сегодняшний день, является JavaScript. JavaScript может быть включён в отдельные текстовые файлы, на которые ссылаются файлы HTML, или же вы можете вставить его прямо в HTML в специальные теги HTML — script теги. Когда веб-браузер пользователя встречает эти теги, он выполняет код JavaScript, содержащийся либо в тегах, либо в файлах.

Вложенные файлы: 1 файл

WS.docx

— 67.35 Кб (Скачать файл)

Как уже говорилось, срок годности устанавливается в секундах относительно начала эпохи. В 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 и т. д. будут  удовлетворять этому ограничению. Если такое положение также является нежелательным, можно ограничить область  видимости cookies до конкретной страницы:

  setcookie("name", $value, "/web/index.php");

 

Однако и такой способ в полной мере не решает проблему, так как  в этом случае доступ к информации, содержащейся в cookie, может получить, к примеру, скрипт /web/index.php-script/anti_cookie.php. Поэтому появляется необходимость  в шифровании.

=Шифрование=

Применить шифрование к cookies можно  разными способами.

=Ограничение доступа для доменов=

Для дополнительной безопасности, список доменов, имеющих доступ к cookies, должен быть ограничен. Это можно сделать  при помощи следующего кода:

  setcookie("name", $value, "/web/index.php", ".server.com");

При таком ограничении заданной области видимости будут соответствовать  домены с именами server.com, myservser.com, php.server.com и т. д., поскольку проверка на допустимость области видимости домена осуществляется по принципу концевого соответствия.

=Отправка cookies по защищенному  запросу=

Не является излишним для cookie, хранящему  секретные данные, разрешить отвечать только на защищенные запросы HTTP, так  как в этом случае значительно  затрудняется перехват данных, которыми обмениваются клиент и сервер. Для  обеспечения защищенного соединения, функции setcookie передается шестой параметр со значением, равным 1:

  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 {<базовая таблица>|<представление>} [(<столбец>[,<столбец>]...)] VALUES {<константа>| <переменная> } [, {<константа> | <переменная> }] ...)

UPDATE Обновление сущ. строк таблицы.  Кол-во изм. строк зависит от  усл. WHERE. Когда фраза WHERE опущена,  изм. все строки.

UPDATE {<базовая таблица>|<представление>} SET <столбец> = <значение> [,<столбец> = <значение>]... [WHERE <фраза Where>]

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 - группируя по указанному  перечню столбцов с тем, чтобы  получить для каждой группы  единственное агрегированное значение, используя во фразе SELECT SQL функции  (такие как SUM, MAX, MIN, COUNT).

HEAVIN - получая в результате лишь  те группы, которые удовлетворяют  указанному перечню условий отбора  групп. 

ORDER BY - отсортированные по заданным  критериям.

 

 

24. Безопасное  программирование на PHP. Виды атак. Советы и рекомендации по защите  программ.

Виды атак:

1.include баг 

Самая уязвимая точка, если в файле написано include ($file); а подключается файл $file = $_GET [‘file’];

include ($file); - так лучше не  писать

Пользователь не должен видеть, какие файлы подключаются в другой файл.

2.межсайтовый  скриптинг  

htmlspecialchars (<строка>) –  позволяет вместо всех специальных  символов в текст подставлять  их в мнемонике. Например, > –  это &gt, “ – это &quot. Лучше  не использовать теги, а использовать  мнемонику. 

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.Не создавать конфигурационные  файлы (например, которые содержат  имя, пароль), которые доступны  через web. Хранить их в другом  месте, которое будет не доступно  для web.

2.Не делать пароль к  БД совпадающим с паролем ftp.

3.Необходимо шифровать  все пароли при помощи специальных  функций и хранить эти пароли  в БД в зашифрованном виде.

4.Необходимо следить за  обновлениями ПО.

5.Не нужно давать распространенные  имена конфигурационным файлам.

6.Необходима фильтрация  всех форм, т.е. предварительная  проверка средствами JavaScript (на стороне  клиента), потом средствами PHP и т.д.


Информация о работе Лекции по "Программированию"