Основные формы PHP обрабатывают вопросы безопасности - PullRequest
0 голосов
/ 29 августа 2018

Очень новый для PHP, создание веб-формы, которая отправляет свое содержимое в файл PHP. Файл PHP должен связать данные в электронное письмо с самим собой, поскольку я не достаточно уверен, чтобы отправлять данные непосредственно в нашу систему. Я загрузил тестовый файл PHP на сервер для тестирования, и в выходные я получил несколько пустых электронных писем, отправленных файлом, и я предполагаю, что это означает, что кто-то обращается к файлу, не заполнив форму.

  1. Использую ли я правильный оператор if для предотвращения запуска кода, когда кто-то переходит на мой php-файл?
  2. Как я могу сделать .php недоступным для всех, кроме веб-формы?
  3. Я сделал какие-либо явные ошибки?

    <?php 
    if($_SERVER["REQUEST_METHOD"] == "POST") {
    $emailbody = 'Name: '.$_POST['m_title'].' '.$_POST['m_firstname'].' '.$_POST['m_surname']."\n"
                .'Email: '.$_POST['m_email']."\n"
                .'Phone: '.$_POST['m_phone']."\n"
                .'D.O.B: '.$_POST['m_dob_day'].' '.$_POST['m_dob_month'].' '.$_POST['m_dob_year']."\n"          
                .'Postcode: '.$_POST['m_postcode']."\n"
                .'Lenders: '.$_POST['m_bank1'].','.$_POST['m_bank2'].','.$_POST['m_bank3'].','.$_POST['m_bank4'].','.$_POST['m_bank5'].','.$_POST['m_bank6'].','.$_POST['m_bank7'].','.$_POST['m_bank8'];
    mail('**removed**', 'Web Lead', $emailbody);
    header('Location: https://www.**removed**' true, 301);
    }
    exit();
    

    ?>

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Вы можете запретить пользователям переходить к файлу, используя проверки внешнего интерфейса и внутреннего интерфейса.

  • [Frontend] Использование обязательных для заполнения полей веб-формы [HTML].
  • [Backend] отправка почты только когда $ POST ['required_field']! = NULL.
0 голосов
/ 29 августа 2018

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

<?php 
if($_SERVER["REQUEST_METHOD"] =="POST") { 
    If(isset($_POST['m_firstname']) && $_POST['m_firstname']!=''){
        If(isset($_POST['m_title']) &&$_POST['m_title']!=''){
            //likewise check for required data are coming from request.
            $emailbody = 'Name: '. $_POST['m_title'].' '.$_POST['m_firstname'].' '.$_POST['m_surname']."\n" .'Email: '.$_POST['m_email']."\n" .'Phone: '.$_POST['m_phone']."\n" .'D.O.B: '.$_POST['m_dob_day'].' '.$_POST['m_dob_month'].' '.$_POST['m_dob_year']."\n" .'Postcode: '.$_POST['m_postcode']."\n" .'Lenders: '.$_POST['m_bank1'].','.$_POST['m_bank2'].','.$_POST['m_bank3'].','.$_POST['m_bank4'].','.$_POST['m_bank5'].','.$_POST['m_bank6'].','.$_POST['m_bank7'].','.$_POST['m_bank8']; mail('**removed**', 'Web Lead', $emailbody); header('Location: https://www.**removed**' true, 301);
        }else{
            Echo 'title required';
        }
    }else{
        Echo 'name required';
    }
 } exit();

Это поможет вам прекратить необходимые почтовые операции.

В противном случае, Нажмите кнопку подтверждения для подтверждения

<?php
If(isset($_POST['submit'])){
    // put mail function here
}

Надеюсь, это поможет вам:)

0 голосов
/ 29 августа 2018

Использую ли я правильный оператор if для предотвращения запуска кода, когда кто-то переходит на мой php-файл?

Не совсем, если кто-то получит доступ к файлу с помощью запроса POST с пустыми полями формы, он отправит вам электронное письмо без переменных, указанных в сообщении, таких как m_title m_email и т. Д.

Как я могу сделать .php недоступным для всех, кроме веб-формы?

Вы можете добавить токен CSRF в форму

Я сделал какие-либо явные ошибки?

Нет проверки, выход не может привести к потенциальным уязвимостям безопасности. 301 тоже не имеет смысла, если вы действительно не хотите перенаправлять пользователя каждый раз, когда он обращается к странице с формой по указанному URL.

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