Ответы пользователя по тегу Веб-разработка
  • Как предотвратить имитацию запросов?

    Elaryks
    @Elaryks
    Да, сымитировать запрос можно. Поэтому есть правило: "Нельзя доверять данным, которые приходят с клиента". Следовательно, данные с клиента нужно проверять на сервере. Критические данные и операции нужно подписывать или хэшировать, чтобы избежать подмены. Например, для защиты от Replay Attack используют одноразовые токены — при повторном запросе токен уже не сработает.
    Ответ написан
    4 комментария
  • Как через веб сайт можно узнать папки компьютера?

    Elaryks
    @Elaryks
    С помощью File System Access API можно взаимодействовать с файловой системой. Вот статья на Хабре: ссылка.

    Простой пример, в котором выводится содержимое директории и записывается тестовый файл:

    const getFolderData = async () => {
        if (!('showDirectoryPicker' in window)) {
            console.error('File System Access API не поддерживается');
            return;
        }
    
        try {
            const dirHandle = await window.showDirectoryPicker();
            const contents = [];
    
            for await (const entry of dirHandle.values()) {
                if (entry.kind === 'file') {
                    contents.push(`Файл: ${entry.name}`);
                } else if (entry.kind === 'directory') {
                    contents.push(`Папка: ${entry.name}`);
                }
            }
    
            contents.forEach(item => console.log(item));
    
            return dirHandle;
        } catch (err) {
            console.error('Непредвиденная ошибка:', err);
        }
    }
    
    const writeSomeDocument = async (dirHandle) => {
        try {
            const newFileHandle = await dirHandle.getFileHandle("test.txt", {
                create: true
            });
    
            const writable = await newFileHandle.createWritable();
            await writable.write("Hello, world!");
            await writable.close();
    
            console.log('Файл создан');
        } catch (err) {
            console.error('Непредвиденная ошибка:', err);
        }
    }
    
    const dirHandle = await getFolderData(); // Получаем сущность для работы с директорией и выводим её содержимое
    writeSomeDocument(dirHandle); // Записываем тестовый файл в эту директорию
    Ответ написан
    3 комментария