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.