使用 csp header submit/redirect html 形式安全地 validation.php 的最佳方式?

Best way to submit/redirect a html form to validation.php securly with a csp header?

我用 php csp header 制作了一个 HTML 表格。我想使用 php 进行安全结帐。我的 csp header 看起来像这样: 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 文件在重定向到 thankyou.php 文件时不显示在 url 中。

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 上阅读了一篇文章。 但我不知道如何重定向 securly.

我希望有人能告诉我如何从我的表单重定向到 validation.php 和 thankyou.php 文件(主要是黑客安全)。

无论如何,您必须将表单发送到服务器的某处,并且您无法通过重定向隐藏此 PHP-module(这些很容易在 HTTP headers 中进行跟踪,因此可以防止 kiddie-hackers仅)。

您已经使用 CSRF 令牌和 CSP 的 form-action 来确保安全。不错。
为了使黑客攻击复杂化,您还可以使用 CAPTCHA 服务(如 reCAPTHA、hCAPTCHA),但这些 third-party 脚本也需要在 CSP 中允许(因为您使用它)。

但是隐藏表单处理程序是不可能的(validation.php)。
只能创建没有漏洞的 validation.php 处理程序,让黑客没有机会。