HTML-从外部PHP文件进行后期注入
我刚想到,假设有一个表单,它有一个存储数据的变量(基于这个变量,表单将被相应地处理) 假设用户在他们的电子邮件中获得了一个参考/注册链接以进行注册,假设url带有加密的GET变量,如:HTML-从外部PHP文件进行后期注入,php,html,Php,Html,我刚想到,假设有一个表单,它有一个存储数据的变量(基于这个变量,表单将被相应地处理) 假设用户在他们的电子邮件中获得了一个参考/注册链接以进行注册,假设url带有加密的GET变量,如:http://www.example.com?a42as231Adab 例如,有一个表单从get变量获取id: $usersID = decrypt($_GET['user']); <form method='POST' action='viewdata.php?userID=$usersID'> $
http://www.example.com?a42as231Adab
例如,有一个表单从get变量获取id:
$usersID = decrypt($_GET['user']);
<form method='POST' action='viewdata.php?userID=$usersID'>
$usersID=decrypt($\u GET['user']);
因为用户可以单击“查看源代码”,他们将很容易看到操作的位置以及它正在解析的用户标识
那么,什么可以阻止某人:
在其服务器上创建一个空白的新PHP文件,将原始表单复制到其PHP文件中,并将其更改为:
<form method='POST' action='viewdata.php?userID=1'>
我的意思是假设在这个场景中,userID是连续的,所以1,2,3可能最终成为管理员
假设viewdata.php注意到userID是admin,它将允许用户管理一些东西
换句话说:除了特定的域之外,有什么方法可以防止表单被发布吗?我知道,如果仅仅根据用户的ID就可以给用户提供访问权限,这可能会被认为是非常糟糕的安全措施,但我仍然对此感到好奇,这只是我的一个随机想法 如果你不想让任何人乱搞敏感信息,那就别给他们。与您的
index.php
以加密形式处理此信息的方式相同,viewdata.php
也可以这样做
您还可以将它存储在$\u SESSION
中,并使viewdata.php
从那里获取它。这就是为什么$\u SESSION
在那里的原因
要防止跨站点发布,请使用postkey。例如:
echo "<form method='POST' action='viewdata.php?userID=$usersID'>";
echo "<input type='hidden' name='postkey' value='" . session_id() . "'>';
echo”“;
回声“;
现在在
viewdata.php
中,检查$\u POST['postkey']==session\u id()
以了解该用户是否真的提交了处方集,或者他是否是被某个外部来源诱使提交的。我不完全确定你的问题是什么,但我认为你说的是CSRF漏洞?所以你的意思是,当用户使用加密的用户id访问该页面时,他实际上是以该用户的身份登录的(假设用户23)?(编辑:)因此,他可能只会发布到viewdata.php?userID=23简单地说:如果表单操作取决于特定变量,那么是什么阻止用户通过从外部域发送表单来更改该变量呢?在外部域中,用户可以编写自己的php表单并对其进行修改,这几乎是向用户隐藏信息但仍然能够访问它的唯一方法跨页面使用会话?不。你可以使用加密技术。我喜欢使用校验和+AES块密码+base64的组合来生成包含敏感数据的字符串,我可以安全地将这些数据交给用户,供其他页面处理。他无法读取这些数据,因为这些数据是加密的,他甚至无法处理这些数据以生成随机行为,因为有一个c加密背后的hecksum确保解密结果是安全可靠的。