阻止其他網站發送數據到我的網站在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
不確定。這不是一個答案,更多的是「你應該去研究這個術語」,這不是嚴格的答案。 –