你好每一個身體: 我檢查了我的網站的安全問題(漏洞)。 報告說,有一個XSS漏洞,在我的login.php頁面 其實我嘗試通過將用htmlspecialchars()在發送給我的數據庫變量來解決這個問題,但我不知道這是正確的避免XSS漏洞通過將用htmlspecialchars()函數
這裏是我的login.php頁面PHP代碼:
<?php require_once('../Connections/minisrty.php'); ?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
}
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}
if (isset($_POST['user'])) {
**htmlspecialchars($loginUsername=$_POST['user'],ENT_QUOTES,'utf-8');**
**htmlspecialchars($password=$_POST['pass'],ENT_QUOTES,'utf-8');**
$MM_fldUserAuthorization = "";
$MM_redirectLoginSuccess = "insertion.php";
$MM_redirectLoginFailed = "login.php";
$MM_redirecttoReferrer = false;
mysql_select_db($database_minisrty, $minisrty);
$LoginRS__query=sprintf("SELECT username, password FROM log WHERE username='%s' AND password='%s'",
get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));
$LoginRS = mysql_query($LoginRS__query, $minisrty) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = "";
//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;
if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: " . $MM_redirectLoginSuccess);
}
else {
header("Location: ". $MM_redirectLoginFailed);
}
}
?>
將這項工作
.. ???
htmspecialchars是用於防止HTML注射。它不會阻止某人破壞你的數據庫。 '$ _ POST [ '用戶'] = 「」; DROP TABLE日誌「'不會在所有的htmlspecialchars感動。 –
@Marc。如果你閱讀標題,它說XSS不是SQL。 – frostymarvelous
@frosty:是的,但代碼仍然是sql易受攻擊的。 'addslashes()'是堅固牆壁的溼手紙。 –