Лучший способ отправить / перенаправить html-форму в validation.php безопасно с заголовком csp?

#php #html #forms #security #content-security-policy

#php #HTML #формы #Безопасность #content-security-policy

Вопрос:

Я создал HTML-форму с заголовком php csp. Я хочу сделать безопасную проверку с помощью php. Мой заголовок csp выглядит так: Content-Security-Policy:default-src 'none'; base-uri 'self'; form-action 'none' https:example.com; . В моей форме также есть сгенерированный php токен CSRF.

Теперь моя проблема: у меня index.php файл с формой и генератором токенов, а validation.php файл и thankyou.php файл с конечным экраном. Я хочу, чтобы validation.php файл не отображается в URL-адресе при перенаправлении на thankyou.php досье.

index.php

 <!---- HERE IS MY PHP CODE ---->
header('X-XSS-Protection: 1; mode=block');
header('X-Frame-Options: deny');
header('X-Content-Type-Options: nosniff');
header('Referrer-Policy: same-origin');
/* CSRF Protection */
$_SESSION['token'] = bin2hex(random_bytes(24));
<!---- ******************* ---->
<form id="delivery-form" action="php/validation.php"> <!---- HERE I'M NOT SURE HOW TO HIDE ---->
    <div id="delivery-address" class="site">
    <h2>Delivery Address/h2>

    <!---Radio Buttons---->
    <label for="men" class="radio men">
        <input type="radio" name="rdo" id="men" class="hidden"/>
        <span class="label"></span>Herr
    </label>
  
    <label for="woman" class="radio">
        <input type="radio" name="rdo" id="woman" class="hidden"/>
        <span class="label"></span>Frau
    </label><br><br>
  
    <div class="inputBox">
        <input type="text" placeholder=" " name="firstname" autocomplete="on" required value="">
        <label>Firstname</label>
    </div><br>

    <div class="inputBox">
        <input type="text" placeholder=" " name="lastname" class="big_break" autocomplete="on" required value="">
        <label>Lastname</label>
    </div><br>
    
    <div class="inputBox">
        <input type="text" placeholder=" " name="street" id="input_middle_size" autocomplete="on" required value="">
        <label>Street</label>
    </div>
    <div class="inputBox">
        <input type="text" placeholder=" " name="number" id="input_small_size" autocomplete="on" required value="">
        <label>Number</label>
    </div><br>
    
    <div class="inputBox">
        <input type="text" placeholder=" " name="plz" id="input_small_size" autocomplete="on" required value="">
        <label>Place</label>
    </div>
    <div class="inputBox">
        <input type="text" placeholder=" " name="town" class="big_break" id="input_middle_size" autocomplete="on" required value="">
        <label>town</label>
    </div><br>

    <div class="inputBox">
        <input type="email" placeholder=" " name="email" autocomplete="on" required value="">
        <label>E-Mail</label>
    </div><br>
    <!---Vorwahl und Telefonnummer Feld---->
    <div class="inputBox">
        <input type="text" placeholder=" " name="vorwahl" id="input_small_size" autocomplete="on" required value="">
        <label>area-code</label>
    </div>
    <div class="inputBox">
        <input type="tel" placeholder=" " name="phone_number" class="big_break" id="input_middle_size" autocomplete="on" required value="">
        <label>phone-number</label>
    </div><br>
   </div>
</form>
  

Потому что хакер может затем атаковать мой validation.php досье. Я прочитал статью через Post / Redirect / Get.
Но у меня нет idee, как я могу перенаправить безопасно.

Я надеюсь, что кто-нибудь может сказать мне, как я могу перенаправить с моей формы на validation.php и thankyou.php файл (в основном безопасный для хакеров).

Ответ №1:

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

Вы уже используете токены CSRF и CSP form-action для обеспечения безопасности. Это хорошо.
Чтобы усложнить хакерские атаки, вы можете дополнительно использовать службу CAPTCHA (например, reCAPTHA, hCAPTCHA), но эти сторонние скрипты также должны быть разрешены в CSP (поскольку вы его используете).

Но невозможно скрыть обработчик формы (validation.php в вашем случае).
Возможно только создать validation.php обработчик без уязвимостей и не оставляет хакерам никаких шансов.