hallo全身: セキュリティ上の問題(脆弱性)について私のウェブサイトをチェックしました。 報告書によると、XSSの脆弱性があると私のlogin.phpページ に、実際に私のデータベースに送信する変数にhtmlspecialchars()を入れてこの問題を解決しようとしていますが、これが正しいかどうかわかりませんHTMLSPECIALCHARS()関数を実装してXSSの脆弱性を回避してください
ここ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 ['user'] =" ';ドロップテーブルログ "はhtmlspecialcharsによってまったく触れられませんでした。 –
@Marc。あなたがタイトルを読んでいれば、それはXSSではなくSQLと言います。 – frostymarvelous
@frosty:はい、コードはまだSQLの脆弱です。 'addslashes()'は含浸可能な濡れたトイレットペーパーです。 –