如何防止他人将自己的数据发送到我的php页面?

Moh*_*sin 2 html php forms

假设我的网站上有一个包含注册表的注册页面:

<form action="register.php" method="post">
<input name="...">
<input...>
...
<input type='submit'>
</form>
Run Code Online (Sandbox Code Playgroud)

然后其他人创建了自己的页面并使用了我的表单的操作页面:

<form action="http://mywebsitename.com/register.php" method="post">
Run Code Online (Sandbox Code Playgroud)

他可以这样将自己的数据发布到我的页面吗?如果是这样我怎么能阻止这个?

编辑:似乎使用令牌并将其值存储在会话变量中并不会阻止某人通过首先打开我的原始页面来提交他自己的表单中的数据(即使每个页面请求都生成了令牌)(因此对他来说是一个会话)启动并生成该会话的令牌),然后在会话中使用该表单以自己的形式.
所以我认为昆汀是对的,数据必须在行动页面中被验证才能被接受.

谢谢大家.

Que*_*tin 7

鉴于:

  • 爱丽丝,一个有浏览器的人
  • 鲍勃,一个有网站的人(你)

Bob无法控制Alice提交的内容.您的HTTP服务器是您的公共接口,您无法控制它外部的内容.

你必须:

  • 决定你信任的数据量(auth/authz可以在这里提供帮助)
  • 完整性检查提交的数据(看看它是否合理(这个日期是一个日期?这是在过去10分钟内从同一个IP地址注册的第三个帐户吗?等))
  • 在将数据用作代码之前转义数据(例如在SQL语句或HTML文档中)

如果我们添加到玩家列表中:

  • 马洛里,另一个网站的恶意人士

您可以让Mallory非常难以欺骗Alice提交恶意数据(这将使用Alice的用户凭据到达).应该使用针对CSRF通常防御(即,每个会话唯一且存储在会话数据中并且作为隐藏输入形式的令牌).