0

你好,亲爱的,你总是帮助我走得更远。

我的表格有问题。

提交后如何保护它免受用户操纵?

形式

<form method="post" action="/selling.php" />
<input type="hidden" name="user" value="{$_SESSION['session_username']}" />
<input type="hidden" name="price" value="$price" />
<input type="hidden" name="nick" value="$nick" />
<input type="hidden" name="class" value="$class" />
<input type="hidden" name="amount" value="$amount" />
<input type="submit" name="reset" class="input_submit" value="Submit" />
</form>";

它是如何工作的?

用户登录我的网站,然后根据他的“$username”,我从 DB(昵称、类)中检索他的信息,并根据某些条件为它创建一个“$amount”和“$price”。

一切都会自动进行,用户所要做的就是单击“提交”按钮。

但我发现他可以操纵整个表格并将例如“$ price”更改为0 ...

我应该怎么做?

4

1 回答 1

1

无论您可能从哪里获得$amount$price来自哪里,它似乎都是在输出表格之前计算出来的。这意味着您也可以将这两个值存储在会话中,例如

$_SESSION['amount'] = $amount;
$_SESSION['price'] = $price;

并以形式完全摆脱它们。只要您在尝试访问之前启动会话,您就可以在 sell.php 中访问这些会话:

session_start();

这样一来,任何敏感信息都不会显示在表单/源代码中,但仍会在 sell.php 中可用。

请记住始终在后端(即 php 代码)中进行验证,而不是在前端进行。

于 2012-11-17T01:05:50.173 回答