php使隐藏字段防篡改?

php使隐藏字段防篡改?,php,forms,spoofing,Php,Forms,Spoofing,我不想使用一个框架,当在这个项目中只有一个值需要验证时,我想确保我使用的方法是合理的安全和理智的 我在web根目录之外的include中设置了$secret值 表单看起来像$salt是一个随机整数,每个表单都有一个新的整数 <form name="deleteform" action="#" method="get"> <input type="hidden" name="check" value="<?=sha1($salt.$secret.$songid)?>"

我不想使用一个框架,当在这个项目中只有一个值需要验证时,我想确保我使用的方法是合理的安全和理智的

我在web根目录之外的include中设置了$secret值

表单看起来像$salt是一个随机整数,每个表单都有一个新的整数

<form name="deleteform" action="#" method="get">
<input type="hidden" name="check" value="<?=sha1($salt.$secret.$songid)?>"/>
<input type="hidden" name="songid" value="<?=$songid?>"/>
<input type="hidden" name="salt" value="<?=$salt?>"/>
<input type="hidden" name="action" value="delete"/>
<input type="submit" value="Delete"/></form>
当表单返回时,我使用$salt$songid和$secret的返回值来计算新的sha1并将其与$check进行比较


如果它们相等,我假设返回的$songid没有被使用$\u会话篡改。即使你仍然想做防篡改隐藏场的想法。要使其防篡改,您必须在点击submit后在服务器端设置该值。您可以使用jQuery的.preventDefault来实现这一点,在该点设置隐藏字段的值,然后继续提交。但是为什么要多做一步呢

只需使用开始时的会话,例如:

session_start();

$_SESSION['name'] = value;

echo $_SESSION['name'];

$\u会话是一种方式。。。您的设计的缺点是仍然可以通过简单地复制/粘贴值来调整表单

此外,如果他们知道你在做什么样的检查,绝对没有什么能阻止他们输入自己的songid,计算自己的sha1哈希并将其填充到你的检查字段中

会议一般介绍:

 session_start();

$_SESSION['songid']=your song id;

你已经完成了。。。现在songid值存储在服务器上,除了您之外,没有任何东西可以篡改它。。。除非openSSL再次中断。

为什么不在$\u会话中保存值?浏览器发送给您的任何内容都不可信。我同意@NiettheDarkAbsol的观点,永远不要信任从浏览器发送的数据,最好使用$\u session您永远不要使用GET进行破坏性操作。还有,你到底从这里开始检查什么?^^^$_会话是一种方式……例如,世界上所有的安全措施都没有阻止我入侵我自己的旧神奇宝贝网站,以获得500级闪亮的喵:啊,我刚开始编程的年份……好奇地想知道他们在没有$secret的情况下如何计算sha1?