我正在測試我的mysql代碼漏洞。
這是PHP注入:如何將php代碼插入數據庫?
$myvar = "varname";
$x = $_GET['arg'];
eval("\$myvar = \$x;");
或任何其他的PHP代碼,像打擊:
<?php mysqli_close($conn); ?>
我的目的是將它們插入到數據庫,但不執行這些命令。
Actualy這些代碼要去插入DB從用戶一個HTML輸入形式和我灣以顯示它們爲用戶(某物等消息)
問題:
的問題是,當嘗試插入他們到DB它失敗,我的插入查詢是這樣的:
mysqli_query($conn,"INSERT INTO table (usr,id,message,date) VALUES ($usr,'$id','$message','$date')");
該代碼在$message
。
我還應該添加此驗證功能:
function validate($data)
{
stripslashes($data);
htmlspecialchars($data);
htmlentities($data);
strip_tags($data);
addslashes($data);
return($data);
}
通過此功能validate($message)
插入$message
到DB我已經驗證過,但即使這樣能不能解決問題。
我已經搜索,但沒有結果在谷歌這個問題!
任何人都知道如何將代碼插入MySQL數據庫?
簡單地使用準備好的statemants,而不是自行清除插入數據。順便說一句:在保存到數據庫之前,'base64_encode'如何?然後,你不會遇到單引號和反斜線的問題,這些問題可以成爲php的一部分。 – JustOnUnderMillions
而你的'validate()'函數只是一個註釋:你不改變數據。通常在PHP中,您將執行此操作'$ data = stripslashes($ data);''data = htmlspecialchars($ data);'取決於使用的函數。閱讀更多關於php.net的每個功能。 – JustOnUnderMillions
剛剛看了一下準備的語句:http://php.net/manual/en/mysqli.prepare.php http://stackoverflow.com/questions/1290975/how-to-create-a-secure-mysql-prepared-聲明在PHP – Alex