首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php让隐藏字段成为防篡改的?

php让隐藏字段成为防篡改的?
EN

Stack Overflow用户
提问于 2014-06-06 21:10:36
回答 2查看 266关注 0票数 1

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

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

表单如下所示( $salt是一个随机整数,每个表单都有一个新的整数)

代码语言:javascript
复制
<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没有被篡改

EN

回答 2

Stack Overflow用户

发布于 2014-06-06 21:18:36

使用$_SESSIONS是可行的。即使你还想做防篡改的隐藏域的想法。要使其具有防篡改功能,您必须在点击submit之后在服务器端设置值。可以使用jQuery的.preventDefault()设置隐藏字段的值,然后继续提交。但是为什么要做额外的步骤呢?

只需从一开始就使用会话,例如:

代码语言:javascript
复制
session_start();

$_SESSION['name'] = value;

echo $_SESSION['name'];
票数 0
EN

Stack Overflow用户

发布于 2014-06-06 21:20:23

$_SESSION是最好的选择……你的设计的缺点是,人们仍然可以通过简单地复制/粘贴值来调整表单。

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

会话的一般介绍:

代码语言:javascript
复制
 session_start();

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

你就完事了..。现在,songid值存储在服务器上,除了您之外,没有人能篡改它。除非openSSL再次崩溃。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24082687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档