阻止其他网站发送数据到我的网站在PHP中的最佳方法是什么?如何防止其他网站发送数据到我的网站在PHP
我把它搜索了一遍,发现我需要使用哈希。但是有不同的哈希,哪一个可以使用?比方说,我挑sha1
现在,我究竟能避免其他网站后的数据发送到我的网站sha1
我有点糊涂了,可有人告诉我一个小演示代码。
这是代码,我想,但它并非无懈可击..
Index.php page:
$password = sha1("toby123");
<form method="post" action="insert.php" />
<input type="text" name="username"/>
<input type="password" name="password"/>
<input type="hidden" name="hiddenpass" value=" ".$password." "/>
</form>
插入到数据库中的PHP页面:
$hiddenpass = "toby123"
if ( $_POST["hiddenpass"] == "sha1($hiddenpass)" )
{
// INSERT THE DATA
}
但这里的问题是,表格中的代码将对每个人都是可见的。如果有人破解它会怎么样?
我的意思是,通过使用命中&试验方法???
我的方法是否100%安全?
编辑:
这是在寻找答案的一个后,我的新代码,但如果条件永远是假的。
index.php页面
<?php
// Start the session
session_start();
$token = bin2hex(random_bytes(32));
if (!isset($_SESSION['token'])) {
$_SESSION['token'] = $token;
}
?>
Insert.php页:
session_start();
echo $_SESSION['token'];
echo '<br/>';
echo $_POST['token'];
if ( (isset($_SESSION['token'])) && ($_POST['token'] == $_SESSION['token']))
{
// Insert Data
}
else
echo "<br/>Something went wrong";
unset($_SESSION['token']);
输出:
055442be59701631db6ed88dc341027ebf2238507bb9a72f1caefd6d3b126a4b
055442be59701631db6ed88dc341027ebf2238507bb9a72f1caefd6d3b126a4b
出了错
您不能阻止他们以这种方式发送POST数据(到PHP运行时请求已发送),但您应该查找的术语是CSRF令牌,它们丢弃一个令牌。 –
@JonStirling此评论应该是一个答案 – Philipp
不确定。这不是一个答案,更多的是“你应该去研究这个术语”,这不是严格的答案。 –