Skip to main content

Безпека

Захист від SQL injection

На строні сервера зроблено модуль для перевірки запитів на можливий вміст SQL ін'єкції. Перевірка відбувається за сигнатурою (входження сигнатури у якості підрядка у рядок). Для цього впровадженно окремий файл, який містить сігнатурні рядки такого способу проникнення у систему. Перевірка викликається під час переходу до нової сторінки додатку та виклику АПІ, що унеможливлює проникнення у систему таким чином

Також, додатково можна задати власні перевірки через json-файл, які будуть додані до існуючих. Файл повинен відповідати наступній структурі:

[
"()", // рядок із сигнатурою, яка буде перевірятись
"^",
"*",
"like ",
"@variable"
]

Захист від XSS injection

Також, подібно до захисту від SQL injection зроблено захист від XSS injection. Реалізовано одразу декілька перевірок для захисту від XSS injection, а саме:

  1. Firewall - Перевірка входження сигнатури у якості підрядка у рядок (стоп слова)
  2. Екранування спецсимволів при внесенні та оновленні даних -> Заміна в crud операціях <,>
  3. Екранування спецсимволів при відображенні даних в таблицях -> {{ }} - Handlebars екранує текстовий контент

Є можливість вказати додаткові перевірки до вже існуючих. Файл повинен відповідати наступній структурі:

[
"onmouseover=", // рядок із сигнатурою, яка буде перевірятись
"onerror=",
"<meta",
"<script",
"vascript:",
"ondblclick="
]

CRUD операції

Усі операції, які відносяться до CRUD відбуваються за допомогою токена.

При внесенні чи оновленні даних відбувається додаткова перевірка та екранування спеціальних символів < та >

Додаткові параметри

Додаткові параметри для перевірки, про які йшла мова у попередніх розділах, вказуються у файлі configServer.json, який знаходиться <серверна директорія>/config/configServer.json. У файлі вказуються такі додаткові поля:

{
"sqlInjections": [
"()", // рядок із сигнатурою, яка буде перевірятись
"^",
"*",
"like ",
"@variable"
],
"xssInjections": [
"onmouseover=", // рядок із сигнатурою, яка буде перевірятись
"onerror=",
"<meta",
"<script",
"vascript:",
"ondblclick="
]
}