LINUX.ORG.RU

Bash чат - опасные символы

 


0

2

Есть скрипт который записывает в файл данные от клиентов. Я боюсь что туда могут попасть спец символы, с помощью которых можно навредить моему серверу.

Скрипт:

#!/bin/bash
echo "Please enter your name:"; read USER
tail -n 0 -f chat.log --pid=$$ | grep --line-buffered -v "] ${USER}>" &
while read MSG; do echo "[$(date)] ${USER}> ${MSG}" >> chat.log; done

Меня беспокоит ${MSG} нужно фильтровать данные в ней? Очень надеюсь на помощь.



Последнее исправление: Dima85 (всего исправлений: 1)

Не ленись везде у grep добавлять ключ -F. grep без -F ищет не строку, как многие думают, а регулярки.

спец символы, с помощью которых можно навредить моему серверу.

Серверу символами не навредить.

firkax ★★★★★
()
Ответ на: комментарий от kto_tama

Подскажите пожалуйста что я делаю не так?

echo "[$(date)] ${USER}> ${string//[${MSG}]}" >> chat.log;

Добавив эту строчку я вижу, дату, пользователя, но не вижу текст который они пишет.

Dima85
() автор топика
Последнее исправление: Dima85 (всего исправлений: 1)
Ответ на: комментарий от firkax

Спасибо. То есть у пользователей нет возможности отправив специальный символ, команду например открыть на системе какой-то файл или удалить его?

Dima85
() автор топика
Ответ на: комментарий от anonymous

Хочу попробовать хакнуть свой код, дайте пожалуйста пример как например открыть и показать файл на сервере

Dima85
() автор топика
Ответ на: комментарий от firkax

Не ленись везде у grep добавлять ключ -F. grep без -F ищет не строку, как многие думают, а регулярки.

Ну так то да, но если в тексте чата будет ...] USER - то вся строка пропадёт. Тут вообще grep не нужен, лучше сделать дату фиксированной ширины (заодно о короче), типа date '+%F %T', а потом вырезать вместе с произвольными символами в USER самим bash-ем, "{s#\[????-??-?? ??:??:??\] "$USER"}"

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.