如何区分从我的表单页面发送到processing.php页面的用户输入与任何其他表单页面


How do I discriminate between user input sent to my processing.php page from my form page vs any other form page?

基本上,我试图阻止我的处理页面处理来自其他来源的表单。

我的表格

<form action='processing.php' method='post'>
<input type='text' name='first' value='firstname'>
<input type='submit' name='submit' value='submit'>

他们的形式

<form action='processing.php' method='post'>
<input type='text' name='first' value='firstname'>
<input type='submit' name='submit' value='submit'>

我如何确保我只处理从我的表格发送的表格,或者我可以?

是的,您可以创建一个唯一的令牌,然后使用该令牌来验证来源(这是一个很好的反射)。

这实际上是防止CSRF攻击的一种方法。

您可以在生成表单页面时(例如在会话中)将该令牌存储在服务器上,将其输出到表单中,然后在提交时对其进行验证。

所以你可以做一些类似的事情:

<?php
// Generate token
$_SESSION['csrfToken'] = hash('sha256', uniqid());

形式:

<form> 
<?php
// Render token inside form 
echo '<input type="hidden" name="tk" id="tk" value="' . $_SESSION['csrfToken'] . " />';
....

然后验证:

<?php
// Do your validation inside the submission
if ($_SESSION['csrfToken'] !== $_POST['tk']) 
{
     // Error ...
}
相关文章: