LINUX.ORG.RU
ФорумTalks

Нужны злобные садоводы^W^Wтестеры потестировать cgi-библиотеку на уязвимости и вообще на баги

 , , vvsh


2

3

Собственно, сабж.

Библиотека на баше. Сырцы библиотеки: https://github.com/derlaft/vvsh

Для тестирования набросал три демки:

Сырцы демок: https://github.com/derlaft/vvsh-demos

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

______________________________________________________________

Также в тред кастуются веб-девелоперы:

Сейчас формат сценариев выглядит примерно так:

#!/usr/bin/vvsh

<% header %>
<?xml version="1.0" encoding="utf8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xml:lang="ru" lang="ru">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <title>Markdown demo</title>
  </head>
  <body>
    <div id="show">
    <h1>Enjoy your markdown</h1>
      <% if [ -n "${http_params[text]}" ]; then %>
        <% perform "${http_params[text]}" %>
      <% fi %>
    </div>
    <div id="input">
      <form method="POST" action="">
        <label for="msg">Type your markdown text:</label><br>
          <textarea required name="text" rows="15" cols="40">${http_params[text]}</textarea><br>
          <input type=submit value="Preview">
      </form>
    </div>
  </body>
</html>

Какие еще конструкции были бы тут полезны?

Какие еще нужны макросы для баша?

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 4)
Ответ на: комментарий от Suntechnic

Меня больше беспокоит загрузка файлов на сервер, это раз.

Во-вторых, там может быть куча других дырок. То, что я знаю (подстановка аргументов, XSS и прочая банальщина) я, вроде, прикрыл, но есть вероятность, есть еще что-то

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

Меня больше беспокоит загрузка файлов на сервер, это раз.

Ты конечно не в курсе, но я сейчас загружаю на твой сервер двд-образ центоса весом под 4 гига.

убийца php

лол.

mopsene ★★★
()
Ответ на: удаленный комментарий

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

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

Ты конечно не в курсе, но я сейчас загружаю на твой сервер двд-образ центоса весом под 4 гига.

>_<. Защита от этого есть но она почему-то не работает...

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

Я даже знаю в чем бага, очевидно, я в ту же секунду отправил, что ты удалил.

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

Так я тоже не знаю, как такое на голом апаче сотворить. Я бы при закачке начинал проверять вес, через определенный промежуток времени, и если он превышает лимит, обрубать соединение и говорить человеку, что он неправ.

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

LimitRequestBody number-of-bytes

в конфиг апача

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

Что в смысле? Если в качестве параметра передать url, то файл закачается нормально, просто сообщил, на всякий случай. Вдруг это не задокументированная фича.

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

Вдруг это не задокументированная фича.

Может, это незадокументированная фича твоего диалога выбора файлов?

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

Ты мне лучше расскажи, как это средствами апача пофиксить, гугл только про пхп отвечает

Можно и средствами bash'а. Просто читай поток с stdin'а при помощи dd небольшими порциями (например по 128 КиБ), попутно величивая счётчик. Как только счётчик переваливает через определённый порог - выдавай HTML'ку с ошибкой и завершай работу скрипта.

Deleted
()
Ответ на: комментарий от Deleted

Можно и средствами bash'а. Просто читай поток с stdin'а при помощи dd небольшими порциями (например по 128 КиБ), попутно величивая счётчик. Как только счётчик переваливает через определённый порог - выдавай HTML'ку с ошибкой и завершай работу скрипта.

Оно так и есть. obj.sh, строка 62. Но почему-то не работает

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

Я вообще это из-под мастая проделал. Проверь на лине, а то мой линукс сгорел недавно.

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

Для загрузки больших файлов надо либо дробить файл, либо как-то вебсокеты пытаться прикрутить. Я этим делом когда-то озаботился, но потом не до этого стало - и забил.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от derlafff

Оно так и есть. obj.sh, строка 62. Но почему-то не работает

В таком виде оно и не должно работать, так как ты не сможешь узнать - был ли превышен лимит.

Deleted
()
Ответ на: комментарий от Deleted

Хм, действительно. Подумаю над этим

derlafff ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Хм, нет

Я еще раз посмотрел на свой код

  dd of="$infotemp" bs='1024' count="$MAXLEN" status=noxfer 2>/dev/null

  if read -n1; then
    rm "$infotemp"
    header 'text/plain'
    echo "request is bigger than ${MAXLEN}Kb"
    exit 1
  fi
  

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

derlafff ★★★★★
() автор топика
Ответ на: комментарий от pi11

ну это уже проблемы vps за 2,5 евро

derlafff ★★★★★
() автор топика

В плане теста еще туда пост запрос можно отправить с любого другого сайта, где эту форму поставить. Не знаю в твой ли библиотеке должна быть защита или на уровне приложения, но имей ввиду.
http://en.wikipedia.org/wiki/Cross-site_request_forgery

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

Там временный бан на 80 секунд :)

derlafff ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.