我有一个用 PHP 编码的网站搜索。onkeyup它本质上是一个 PHP-AJAX 搜索,在搜索输入字段的事件中触发。使用 PHP 的函数触发对 PHP 文件的 AJAX 调用,该文件读取包含索引的文件onkeyup。indexes-file.txtfile()
虽然,这里我不是在处理数据库,所以我认为没有 SQL 注入或 XSS 攻击的机会(如果我错了,请纠正我)。
此外,我了解mysqli_real_escape_string()和htmlentities()功能、它们的重要性和用例。我想知道的是这种特定的 PHP-AJAX 方法是否易受攻击。
此外,除了服务器端漏洞之外,这种情况下是否存在任何其他类型的漏洞?
onkeyup功能是:
function results(str) {
var search_term = $("#search")
.val()
.trim();
if (search_term == "") {
// ...
} else {
$.ajax({
url: "websearch.php",
type: "post",
data: {
string: search_term
},
dataType: "json",
success: function(returnData) {
for(var i in returnData) {
for(var j in returnData[i]) {
$('#results').append('<div><a target="_blank" href="'+returnData[i][j]+'">'+Object.keys(returnData[i])+'</a></div>');
}
}
}
});
}
}
包含indexes-file.txt:
books*books.php
newspaper*newspaper.php
download manual*manual.php
...
我的websearch.php文件包含:
<?php
error_reporting(0);
$indexes = 'indexes-file.txt';
$index_array = file($indexes, FILE_IGNORE_NEW_LINES);
foreach($index_array as $st) {
$section = explode('*', $st);
$k = $section[0];
$kklink = $section[1];
$l_arr[] = array($k => $kklink);
}
//Get the search term from "string" POST variable.
$var1 = isset($_POST['string']) ? trim($_POST['string']) : '';
$webresults = array();
//Loop through our lookup array.
foreach($l_arr as $kk){
//If the search term is present.
if(stristr(key($kk), $var1)){
//Add it to the results array.
foreach($kk as $value) {
$webresults[] = array(key($kk) => $value);
}
}
}
//Display the results in JSON format so to parse it with JavaScript.
echo json_encode($webresults);
?>