Защита от внедрения компонентов в React
Если есть компонент, который динамически импортирует и рендерит другой компонент на основе свойства, то есть шанс передачи вредоносного имени компонента в качестве свойства и его импортирования.
Хороший способ обезопасить себя - это ограничить количество компонентов, которые можно динамически импортировать и рендерить. Импортируя только тот, чье имя есть в списке:
👉 @sWebDev
Если есть компонент, который динамически импортирует и рендерит другой компонент на основе свойства, то есть шанс передачи вредоносного имени компонента в качестве свойства и его импортирования.
Хороший способ обезопасить себя - это ограничить количество компонентов, которые можно динамически импортировать и рендерить. Импортируя только тот, чье имя есть в списке:
const COMPONENTS = {
Home: () => import('./Home'),
Profile: () => import('./Profile'),
// ...
};
function DynamicComponent({ componentName }) {
const [Component, setComponent] = useState(null);
useEffect(() => {
const loadComponent = COMPONENTS[componentName];
if (loadComponent) {
loadComponent()
.then(setComponent)
.catch(console.error);
}
}, [componentName]);
return Component ? <Component /> : null;
}
👉 @sWebDev
👍9
Сервис для обнаружения типа устройства пользователя на TypeScript и Vue 3
Туториал для разработки собственного сервиса, способного определять способ взаимодействия с веб-приложением (touchscreen, мышка), ориентацию экрана (горизонтальная, вертикальная), тип устройства (desktop, tab, phone).
👉 @sWebDev
Туториал для разработки собственного сервиса, способного определять способ взаимодействия с веб-приложением (touchscreen, мышка), ориентацию экрана (горизонтальная, вертикальная), тип устройства (desktop, tab, phone).
👉 @sWebDev
👍2
Fitty
Fitty - небольшая библиотека для автоматической подгонки размера текста под размер его контейнера. Она помогает автоматически масштабировать текст, чтобы он полностью вписывался в заданный блок, сохраняя при этом читаемость.
👉 @sWebDev
Fitty - небольшая библиотека для автоматической подгонки размера текста под размер его контейнера. Она помогает автоматически масштабировать текст, чтобы он полностью вписывался в заданный блок, сохраняя при этом читаемость.
👉 @sWebDev
👍5
🔥Тест по React JS от OTUS🔥
— Ответьте на 19 вопросов и проверьте, насколько хорошо вы знаете язык. Сможете сдать — пройдёте на продвинутый онлайн-курс по React.js со скидкой!
🚀ПРОЙТИ ТЕСТ ОНЛАЙН-КУРСА ПО REACT.JS https://otus.pw/H0pAg/
Курс доступен в рассрочку.
🎁Пройдете успешно тест, получите доступ к открытым урокам курса.
Нативная интеграция. Информация о продукте www.otus.ru
— Ответьте на 19 вопросов и проверьте, насколько хорошо вы знаете язык. Сможете сдать — пройдёте на продвинутый онлайн-курс по React.js со скидкой!
🚀ПРОЙТИ ТЕСТ ОНЛАЙН-КУРСА ПО REACT.JS https://otus.pw/H0pAg/
Курс доступен в рассрочку.
🎁Пройдете успешно тест, получите доступ к открытым урокам курса.
Нативная интеграция. Информация о продукте www.otus.ru
👍2
Как использовать Axios с Vue.js
Рассмотрим интеграцию библиотеки Axios во Vue.js для управления HTTP-запросами. Руководство предоставляет простой, но краткий синтаксис Axios для выполнения GET и POST запросов, а также обработку ошибок. Объяснения и примеры понятны, что облегчает понимание даже для новичков. Статья подчеркивает преимущества Axios, такие как поддержка отмены запросов. Однако, некоторые дополнительные примеры и сценарии использования могли бы обогатить материал.
👉 @sWebDev
Рассмотрим интеграцию библиотеки Axios во Vue.js для управления HTTP-запросами. Руководство предоставляет простой, но краткий синтаксис Axios для выполнения GET и POST запросов, а также обработку ошибок. Объяснения и примеры понятны, что облегчает понимание даже для новичков. Статья подчеркивает преимущества Axios, такие как поддержка отмены запросов. Однако, некоторые дополнительные примеры и сценарии использования могли бы обогатить материал.
👉 @sWebDev
👍5
Shave.js
JS библиотека для обрезки текста в блоках с фиксированными размерами. Если у вас есть ограничение по высоте или ширине элемента и текст не помещается полностью, Shave.js автоматически обрежет его и добавит многоточие в конец. Библиотека легка в использовании, поддерживает анимацию и обрабатывает изменение размеров окна браузера.
👉 @sWebDev
JS библиотека для обрезки текста в блоках с фиксированными размерами. Если у вас есть ограничение по высоте или ширине элемента и текст не помещается полностью, Shave.js автоматически обрежет его и добавит многоточие в конец. Библиотека легка в использовании, поддерживает анимацию и обрабатывает изменение размеров окна браузера.
👉 @sWebDev
👍7
Какой вариант защиты от уязвимости IDOR применен в коде?
Недавно мы рассказывали об уязвимости Insecure Direct Object References (IDOR) и рассматривали один из вариантов защиты:
Что это за вариант?
👉 @sWebDev
Недавно мы рассказывали об уязвимости Insecure Direct Object References (IDOR) и рассматривали один из вариантов защиты:
UserDetails() {
const [user, setUser] = useState(null);
useEffect(() => {
fetch('/api/user', {
headers: {
Authorization: `Bearer ${localStorage.getItem('token')}`
}
})
.then(response => response.json())
.then(setUser);
}, []);
// Рендер деталей пользователя...
}
Что это за вариант?
👉 @sWebDev
👍4
Какой вариант защиты от уязвимости Insecure Direct Object References (IDOR) применен в данном коде?
Anonymous Quiz
36%
Использование локального хранилища для хранения данных пользователя.
11%
Шифрование данных перед их передачей на сервер.
37%
Проверка идентификатора пользователя перед отправкой запроса на сервер.
16%
Использование множественных уровней авторизации для доступа к данным.
👍4👎2
Angular - Обработка ошибок 101
Руководство по обработке ошибок в Angular приложениях. Рассмотрим базовые методы обработки ошибок, такие как использование оператора
👉 @sWebDev
Руководство по обработке ошибок в Angular приложениях. Рассмотрим базовые методы обработки ошибок, такие как использование оператора
catchError
и создание специализированных сервисов для обработки ошибок. Статья также описывает, как настроить глобальный обработчик ошибок. Автор уделяет внимание важности уведомления пользователей об ошибках и предоставляет примеры кода для наглядности.👉 @sWebDev
🔥2
Защита от открытых редиректов React
Открытые редиректы возникают, когда приложение включает в целевой URL пользовательский ввод без предварительной проверки. Это может обмануть пользователей и привести к краже данных.
Для защиты мы можем проверять URL перенаправления перед его использованием. Один из способов сделать это - поддерживать список разрешенных URL:
👉 @sWebDev
Открытые редиректы возникают, когда приложение включает в целевой URL пользовательский ввод без предварительной проверки. Это может обмануть пользователей и привести к краже данных.
Для защиты мы можем проверять URL перенаправления перед его использованием. Один из способов сделать это - поддерживать список разрешенных URL:
const ALLOWED_REDIRECTS = ['/home', '/profile', /* ... */];
function Login() {
const [redirectTo, setRedirectTo] = useState('');
const login = async () => {
// Предположим, что эта функция выполняет вход пользователя...
await loginUser();
if (ALLOWED_REDIRECTS.includes(redirectTo)) {
window.location.href = redirectTo;
}
};
// Отрисовываем форму входа...
}
👉 @sWebDev
👍3
Media is too big
VIEW IN TELEGRAM
3D Globe Three.js with location pointer
Анимированный глобус, выполненный на CSS и библиотеке Three.js.
👉 @sWebDev
Анимированный глобус, выполненный на CSS и библиотеке Three.js.
👉 @sWebDev
👍4
React + Signals = Vue 3
В статье сравнение подходов для обработки сигналов React и Vue3. Рассмотрим различия между двумя фреймворками на примере паттерна "сигналов". Изучив материал, вы сможете выбрать наиболее подходящий инструмент в зависимости от вашего проекта.
👉 @sWebDev
В статье сравнение подходов для обработки сигналов React и Vue3. Рассмотрим различия между двумя фреймворками на примере паттерна "сигналов". Изучив материал, вы сможете выбрать наиболее подходящий инструмент в зависимости от вашего проекта.
👉 @sWebDev
👍4❤1🤔1
AngularFire
AngularFire - это интеграция Firebase в Angular. Мощное сочетание, позволяющее удобно создавать веб-приложения, используя функциональность Firebase: базу данных в реальном времени, аутентификацию, хостинг и другие сервисы.
👉 @sWebDev
AngularFire - это интеграция Firebase в Angular. Мощное сочетание, позволяющее удобно создавать веб-приложения, используя функциональность Firebase: базу данных в реальном времени, аутентификацию, хостинг и другие сервисы.
👉 @sWebDev
👍3
Media is too big
VIEW IN TELEGRAM
Создаем клон Twitter на NextJs и Supabase
Пошаговый туториал по созданию собственного Твиттера на NextJs и Supabase.
👉 @sWebDev
Пошаговый туториал по созданию собственного Твиттера на NextJs и Supabase.
👉 @sWebDev
👍6
Аутентификация в Angular, почему это так сложно уложить в голове
Рассмотрим сложности аутентификации Angular. Автор анализирует сложности и непредсказуемость процесса аутентификации в Angular, обсуждая причины, по которым могут возникать затруднения и предоставляет советы по обеспечению более понятной и надежной системы аутентификации.
👉 @sWebDev
Рассмотрим сложности аутентификации Angular. Автор анализирует сложности и непредсказуемость процесса аутентификации в Angular, обсуждая причины, по которым могут возникать затруднения и предоставляет советы по обеспечению более понятной и надежной системы аутентификации.
👉 @sWebDev
👍3
Media is too big
VIEW IN TELEGRAM
Ant Design Vue
Ant Design Vue - библиотека компонентов для разработки пользовательских интерфейсов с использованием Vue.js. Предоставляет более 50 готовых компонентов, включая кнопки, формы, таблицы, навигацию и многое другое. Ant Design Vue следует дизайн-принципам Ant Design и Material Design, обеспечивая современный и стильный внешний вид. Библиотека предоставляет возможность настройки тем, адаптирования компонентов и управления состоянием приложения.
👉 @sWebDev
Ant Design Vue - библиотека компонентов для разработки пользовательских интерфейсов с использованием Vue.js. Предоставляет более 50 готовых компонентов, включая кнопки, формы, таблицы, навигацию и многое другое. Ant Design Vue следует дизайн-принципам Ant Design и Material Design, обеспечивая современный и стильный внешний вид. Библиотека предоставляет возможность настройки тем, адаптирования компонентов и управления состоянием приложения.
👉 @sWebDev
👍5👎4
Как защититься от CSRF-атак в React?
Представьте, что у нас есть конечная точка /api/posts/delete, которая удаляет сообщение на основе идентификатора, указанного в теле запроса. Если мы будем проверять только cookie для аутентификации, то злоумышленник сможет создать вредоносный сайт со следующим скриптом, например:
👉 @sWebDev
Представьте, что у нас есть конечная точка /api/posts/delete, которая удаляет сообщение на основе идентификатора, указанного в теле запроса. Если мы будем проверять только cookie для аутентификации, то злоумышленник сможет создать вредоносный сайт со следующим скриптом, например:
fetch('https://your-website.com/api/posts/delete', {Как защитить свое приложение в таком случае?
method: 'POST',
body: JSON.stringify({
id: 'some-post-id',
}),
credentials: 'include',
});
👉 @sWebDev
👍4🔥1