我有一张表格:
<form class="search" id="searchName" action="results.php" method="GET">
<div class="container-search">
<input type="text" id="wifiname" placeholder="WiFi name" name="wifiname"> <!-- input -->
<button type="submit"><i class="fa fa-search"></i></button>
</div>
</form>
我正在使用$_GET['wifiname']
并搜索数据库。但是,我试图删除在此输入字段中提交脚本的任何机会。我有一些php根据输入搜索数据库,并在搜索之前尝试trim/stripslashes/htmlspecialchars
输入:
// Search by WifiName
if (isset($_GET["wifiname"])) {
$wifiname = $_GET["wifiname"];
$wifiname = trim($wifiname);
$wifiname = stripslashes($wifiname);
$wifiname = htmlspecialchars($wifiname);
$sql = "SELECT * FROM items WHERE wifiName LIKE :wifiname;";
$q = $pdo->prepare($sql);
$q->bindValue(':wifiname', '%' . $wifiname . '%');
$q->execute();
$nRows = $q->rowCount();
if ($nRows == 1) {
echo "<p>" . $nRows . " result found from search...</p>";
} else {
echo "<p>" . $nRows . " results found from search...</p>";
}
} else {
$wifiname = null;
}
但是,当我在输入字段中输入results.php?wifiname=<script>alert%28"Hacked"%29<%2Fscript>
时,提交时会输出:<script>alert("Hacked")</script>
。我做错了什么?
答案 0 :(得分:0)
这就是发生的事情
您正在查看地址栏中的URL,即步骤3中的州的状态。
直到第5步,您的代码才对其执行任何操作。
这不是问题。