Php 如何确保邮寄表格通过我的网站发送?

Php 如何确保邮寄表格通过我的网站发送?,php,asp.net,authentication,post,Php,Asp.net,Authentication,Post,我想知道是否有办法确保通过POST发送的表格来自我的网站。我看过一些教程,他们建议我使用“隐藏”输入值进行验证,但这可能毫无意义,因为任何人都可以查看我网站的html源代码,收集文本框的name属性等信息 如果我不清楚,请告诉我 直到最近,我才开始学习如何使用PHP和ASP.NET创建网站。所以,请说清楚一点,因为我只是一个初学者。提前谢谢 您可以检查推荐人url,如果它与您的域匹配,那么它是安全的 $ref = $_SERVER["HTTP_REFERER"]; 拆分后,将$ref值与您的域

我想知道是否有办法确保通过POST发送的表格来自我的网站。我看过一些教程,他们建议我使用“隐藏”输入值进行验证,但这可能毫无意义,因为任何人都可以查看我网站的html源代码,收集文本框的name属性等信息

如果我不清楚,请告诉我


直到最近,我才开始学习如何使用PHP和ASP.NET创建网站。所以,请说清楚一点,因为我只是一个初学者。提前谢谢

您可以检查推荐人url,如果它与您的域匹配,那么它是安全的

$ref = $_SERVER["HTTP_REFERER"];

拆分后,将$ref值与您的域名进行比较,以仅获取域名。

您知道表单中需要哪些字段和数据,因此最好的做法是根据这些字段和数据验证POST数据。如果您知道需要x个字段,那么请验证该字段,并验证该数据。例如,如果您有一个包含日期输入的字段,请使用PHP确保它是有效的日期。如果它是一个整数,在将其用于任何事情之前,请验证它是否是一个整数。对于文本字段,去掉所有html和JavaScript等,你就明白了


这样做比尝试验证表单是否从您的网站发布要好得多。

您还可以在表单页面上设置一个
$\u SESSION
变量,并在处理页面上检查它。

您可以使用一种称为跨站点请求伪造的技术:

基本上,实践大致如下:

  • 创建一个大的随机字符串并将其存储在服务器端会话中
  • 在表单中包含一个隐藏字段,它表示上面生成的随机数
  • 处理表单时,请检查表单和会话表示
  • 销毁会话表示
此过程的主要限制是表单有时间限制,对会话破坏很敏感,并且只能与用户交互


一旦掌握了PHP的基本知识,为什么不看看如何使用框架呢?我经常使用Symfony2,他们有一个很好的表单包,从一开始就处理这种安全性:

可能的重复:这是可行的,但我不认为
那么它是安全的
:因为它也可以被更改@HankyPankyØweb中没有任何东西是安全的,但是作为一个初创开发人员,这种技术可以给网络安全带来积极的影响。后面的部分是正确的,+1代表你的答案:)推荐人很容易被欺骗,并不总是被发送的,而且总体上非常不可靠。就像隐藏的输入值一样容易被欺骗,甚至更容易。如果OP出于某种安全性要求这样做,
nonce
等更可靠。^erm。。。。这是多年来的标准做法。。。。