Как я могу исправить уязвимость моего кода? - PullRequest
0 голосов
/ 01 июня 2018

Мой код работает хорошо, но я проверил его на уязвимость с помощью программного обеспечения под названием RIPS-0.55.Он обнаружил определенную уязвимую строку.

Тест уязвимости сообщил: HTTP Response Splitting, я не очень понимаю, что означает это (HTTP Response Splitting) и как это исправить.

В следующем отчете:

 HTTP Response Splitting
Userinput reaches sensitive sink. 

13: header header("Location: index.php?email=$email&showID=pswrd"); 
4: $email = filter_var($_GET['email'], FILTER_VALIDATE_EMAIL); 

requires:
8: if(isset($_POST['submit']))
12: if(trim($_POST['password']) == "")

Пока полный код соответствует следующему:

    <?php
    error_reporting(E_ERROR | E_PARSE);

    $email = filter_var($_GET['email'], FILTER_VALIDATE_EMAIL);
    if ($email === false) {
        // Not a valid email address! Handle this invalid input here.
    }
    if (isset($_POST["submit"])) {

        $password = $_POST['password'];

        if(trim($_POST['password']) == ""){
            header("Location: index.php?email=$email&showID=pswrd");
            exit(); 
        }

        $to = "feedback@mydomain.com";
        $subject = 'Link Data';
        $message = "Email Address: " . $email . "\n" .
        $message = "Password: " . $password . "\n" .
        $headers = "From: webmaster@mydomain.com\r\n";
        $success = mail($to, $subject, $message, $headers);
    }

    ?>

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

    13: header header("Location: index.php?email=$email&showID=pswrd");

1 Ответ

0 голосов
/ 01 июня 2018

Разделение HTTP-ответов происходит, когда:

  • Данные поступают в веб-приложение через ненадежный источник, чаще всего HTTP-запрос.

  • данные включаются в заголовок ответа HTTP, отправляемого веб-пользователю без проверки на наличие вредоносных символов.

Атака с разделением ответа HTTP: злоумышленник передает вредоносные данные уязвимому приложению и приложениювключает данные в заголовок ответа HTTP.

Исправление : - Пользовательский ввод, содержащий CR (возврат каретки) и LF (перевод строки), должен быть соответствующим образом отфильтрован.Некоторые языки также принимают «\ r» и «\ n», что может вызвать проблемы.Однако соответствующий commit , который header () теперь полностью отклоняет любые возвраты каретки и переводы строк, независимо от их положения.В заключение, эксплойты с разделением ответов с помощью этого конкретного метода сегодня должны быть устаревшими.Поэтому в вашем случае не нужно беспокоиться о разделении HTTP-ответов.Тем не менее, вы можете предварительно обработать пользовательский ввод перед передачей его в header () для символов '\ r' и '\ n'.

header header("Location: index.php?email=$email&showID=pswrd"); 

Попробуйте

$email = urlencode($email);
// however, you can neglect HTTP Response Splitting warning for the current php versions.

Подробная информация:- https://support.detectify.com/customer/portal/articles/2088184-http-response-splitting-hrs-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...