Поиск ошибок и улучшений в ПО
DESCRIPTION
Лекция-доклад для студентов ЧГТУ кафедры ИКСTRANSCRIPT
![Page 1: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/1.jpg)
Поиск ошибок и улучшений в ПОПрименительно на web-интерфейсах,
сайтах и cs.stu
Максим МирошниченкоWebProduction
![Page 2: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/2.jpg)
SQL-инъекция(SQL-injection)
![Page 3: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/3.jpg)
SELECT * FROM `table` WHERE `id`=’{$x}’;
![Page 4: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/4.jpg)
$x = 10
![Page 5: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/5.jpg)
$x = 10’ OR 1=1 OR id=’1
![Page 6: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/6.jpg)
SELECT * FROM `table` WHERE id=’{$x}’;
+
$x = 10’ OR 1=1 OR id=’1
=
SELECT * FROM `table`WHERE `id`= 10’ OR 1=1 OR id=’1’
![Page 7: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/7.jpg)
Инъекция в оператор SELECT как правило безобидна
(для mysql начиная с 3.23 и выше)
Но инъекция в DELETE сносит всю таблицу!А инъекция в UPDATE “уничтожает” все данные!
![Page 8: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/8.jpg)
DELETE FROM `table` WHERE `id`=’{$x}’;
Если получиться передать в $x кавычки - всем данным в таблице наступит конец.
DELETE FROM `table`WHERE `id`=’1’ OR 1=1 OR id=’2’;
![Page 9: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/9.jpg)
![Page 10: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/10.jpg)
![Page 11: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/11.jpg)
![Page 12: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/12.jpg)
![Page 13: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/13.jpg)
http://frontzmin.org/view_post.php?id=992это означает, что где-то есть update :)
![Page 14: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/14.jpg)
![Page 15: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/15.jpg)
![Page 16: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/16.jpg)
![Page 17: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/17.jpg)
![Page 18: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/18.jpg)
![Page 19: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/19.jpg)
![Page 20: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/20.jpg)
![Page 21: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/21.jpg)
![Page 22: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/22.jpg)
Экранируйте одинарные кавычки!
$x = mysql_escape_string($x);или
$x = str_replace(“ ‘ ”, “ \’ ”, $x);или
просто не пишите sql-запросы руками :)
![Page 23: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/23.jpg)
Проверить ресурс на SQL-инъекцию:
добавьте в URL к параметру одинарную кавычку и просто смотрите, что будет :)
![Page 24: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/24.jpg)
![Page 25: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/25.jpg)
![Page 26: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/26.jpg)
На cs.stu в API есть методы,которые допускают инъекции,
но нету контроллеров,которые эти методы вызывают ;)
![Page 27: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/27.jpg)
![Page 28: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/28.jpg)
![Page 29: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/29.jpg)
Да, это был баг.Но не критичный :)
А нужно было показывать страницу 404...
![Page 30: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/30.jpg)
XSSCross-site-scripting
![Page 31: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/31.jpg)
Пассивный XSS - это всего-лишь прямой вывод GET/POST-параметра в страницу.
Активный XSS - это возможность сделать запрещенную вставку (img, js, flash) в
комментарий, публикацию и т.д.
![Page 32: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/32.jpg)
![Page 33: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/33.jpg)
http://.../page.html?param=</script><script>alert(‘BUGAGA!’);...
![Page 34: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/34.jpg)
![Page 35: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/35.jpg)
![Page 36: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/36.jpg)
На cs.stu вроде-как нету активныхXSS-уязвимостей :)
А раньше были...
![Page 37: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/37.jpg)
![Page 38: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/38.jpg)
Как с бороться с XSS:
Активный XSS: проверяйте данные, которые сохраняете от пользователей.
Пассивный XSS: если параметр из URL приходится показывать на странице -
проверяйте его.
![Page 39: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/39.jpg)
Поиск ошибок и улучшений в формах
ввода
![Page 40: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/40.jpg)
Опять кавычки, но уже двойные :)
![Page 41: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/41.jpg)
<input type=”text” value=”данные” ... />
![Page 42: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/42.jpg)
<input type=”text” value=”данные” ... />
+
если пользователь ввел в данные двойную кавычку
=
<input type=”text” value=”дан”ные” ... />
![Page 43: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/43.jpg)
Это уже баг.
<input type=”text” value=”дан”ные” ... />
![Page 44: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/44.jpg)
<input type=”text” value=”дан” /> <script> alert(‘XSS’);</script>” ... />
Это пассивный XSS.
![Page 45: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/45.jpg)
На cs.stu в формах нету пассивного XSS, но разорвать <input> двойной кавычкой можно.
Баг.
![Page 46: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/46.jpg)
![Page 47: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/47.jpg)
Ошибки и улучшения в полях ввода дат
![Page 48: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/48.jpg)
Любимый и правильный формат дат для разработчиков:
yyyy-mm-dd hh:ii:ss(Y-m-d H:i:s)
Но 99% пользователей его на дух не переносят :)
![Page 49: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/49.jpg)
![Page 50: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/50.jpg)
Пользователи могут ввести:2009-12-09
09-12-09 - фатальный вариант
2009.12.0912.09.200912,09,200912 09 2009
09/12/2009 - фатальный вариант для англоязычных (формат d/m/y)
12/09/2009 - фатальный вариант для русскоязычных (формат m/d/y)
09/12/09 - фатальный вариант
2009 Dec 99 dec 09 и еще +100500 вариантов
![Page 51: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/51.jpg)
Чтобы все остались довольны:
1. Дату, которую вводит пользователь проганяем через strtotime или аналоги.
2. Добавляем каледарик для поля ввода.
3. Формат даты по умолчанию делаем в соответствии с локалью пользователя/севера.
(тяжело)
![Page 52: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/52.jpg)
![Page 53: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/53.jpg)
Исключения для дат рождения
![Page 54: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/54.jpg)
![Page 55: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/55.jpg)
![Page 56: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/56.jpg)
![Page 57: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/57.jpg)
Но если пользователю приходиться заполнять сотни полей с датами (админу, модератору), то:
dd-mm-yydd-mm-yyyy
dd.mm.yydd.mm.yyyy
![Page 58: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/58.jpg)
Поле для ввода емейла:
1. Нужна проверка формата [email protected]. Нужна проверка формата [email protected]
(спасибо GMail)
![Page 59: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/59.jpg)
Если при ошибочном заполнении формы введенные данные слетают, пользователь
второй раз форму не заполнит.
![Page 60: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/60.jpg)
![Page 61: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/61.jpg)
![Page 62: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/62.jpg)
![Page 63: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/63.jpg)
Обращайте внимание на длинну и порядок полей ввода
![Page 64: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/64.jpg)
Поиск “орфографических” визуальныхошибок
(и не только орфографических)
![Page 65: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/65.jpg)
Выравнивания по ширине в web’e НЕТ!
![Page 66: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/66.jpg)
![Page 67: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/67.jpg)
![Page 68: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/68.jpg)
![Page 69: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/69.jpg)
![Page 70: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/70.jpg)
![Page 71: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/71.jpg)
![Page 72: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/72.jpg)
![Page 73: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/73.jpg)
Тире − это —Минус − это “-”
Ссылка должна подчеркиваться или быть подчеркнутой.
![Page 74: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/74.jpg)
![Page 75: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/75.jpg)
![Page 76: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/76.jpg)
Расположение элементовна страницах
![Page 77: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/77.jpg)
![Page 78: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/78.jpg)
![Page 79: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/79.jpg)
![Page 80: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/80.jpg)
![Page 81: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/81.jpg)
![Page 82: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/82.jpg)
![Page 83: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/83.jpg)
![Page 84: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/84.jpg)
![Page 85: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/85.jpg)
![Page 86: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/86.jpg)
![Page 87: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/87.jpg)
![Page 88: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/88.jpg)
![Page 89: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/89.jpg)
Как все происходит,если нету тестирования...
![Page 90: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/90.jpg)
![Page 91: Поиск ошибок и улучшений в ПО](https://reader035.vdocuments.net/reader035/viewer/2022081507/568bdf131a28ab2034bbcb2b/html5/thumbnails/91.jpg)