1. Проверка прав доступа пользователя

 

Рассмотрим пример проверки доступа к административному разделу университетского портала.

 

Для демонстрации используется язык C#.

 

C#-код:

 

string userRole = "Student";

 

if (userRole == "Admin")

{

    Console.WriteLine("Доступ разрешён");

}

else

{

    Console.WriteLine("Доступ запрещён");

}

 

Объяснение:

 

userRole — переменная, содержащая роль пользователя.

Admin — роль администратора.

Student — роль студента.

if — проверяет условие.

else — выполняется, если условие не соблюдается.

 

Результат:

 

Доступ запрещён

 

Пользователь с ролью Student не может выполнять административные действия.

 

Важно:

 

Это упрощённый пример логики авторизации. В реальном веб-приложении сервер должен получать роль из проверенной информации об аутентифицированном пользователе, а не доверять значению, переданному клиентом.

 

 

2. Защита веб-страницы от XSS

 

Рассмотрим пример безопасного отображения пользовательского текста на странице.

 

HTML-код:

 

<input type="text" id="comment">

<button id="showButton">Показать комментарий</button>

 

<p id="result"></p>

 

JavaScript-код:

 

const input = document.querySelector("#comment");

const button = document.querySelector("#showButton");

const result = document.querySelector("#result");

 

button.addEventListener("click", function() {

    result.textContent = input.value;

});

 

Объяснение:

 

input.value — получает введённый пользователем текст.

textContent — вставляет содержимое как обычный текст.

addEventListener() — обрабатывает нажатие кнопки.

 

При использовании textContent браузер не интерпретирует введённую строку как HTML-код.

 

Результат:

 

Если пользователь введёт:

 

<b>Важное сообщение</b>

 

На странице отобразится именно текст:

 

<b>Важное сообщение</b>

 

Теги не будут преобразованы в HTML-элементы.

 

Это помогает предотвращать XSS при отображении недоверенного текста.

 

 

3. Использование параметризованного SQL-запроса

 

Рассмотрим пример безопасного поиска преподавателя в базе данных.

 

Для демонстрации используется C# и ADO.NET.

 

C#-код:

 

using Microsoft.Data.SqlClient;

 

string teacherName = "Алия";

 

using var connection = new SqlConnection(connectionString);

 

await connection.OpenAsync();

 

string sql = "SELECT Id, Name FROM Teachers WHERE Name = @name";

 

using var command = new SqlCommand(sql, connection);

 

command.Parameters.Add("@name", System.Data.SqlDbType.NVarChar, 100)

                  .Value = teacherName;

 

using var reader = await command.ExecuteReaderAsync();

 

while (await reader.ReadAsync())

{

    Console.WriteLine(reader["Name"]);

}

 

Объяснение:

 

SqlConnection — устанавливает соединение с SQL Server.

SqlCommand — выполняет SQL-команду.

@name — параметр запроса.

Parameters.Add() — передаёт значение отдельно от текста SQL.

ExecuteReaderAsync() — выполняет запрос и получает результат.

 

Результат:

 

Программа ищет преподавателя по имени «Алия».

 

Если запись существует, имя выводится в консоль.

 

Параметризованный запрос отделяет пользовательские данные от SQL-команды и помогает предотвращать SQL-инъекции.

 

Для выполнения примера необходимы подключение к SQL Server, таблица Teachers и корректная строка подключения connectionString.