############################################
## Connection Creation for Both Databases ##
############################################
//Create Connection for Pokemon Test Database
$PokemonConnection=mysqli_connect("URL","username","password","database");
//Check Pokemon Test Database Connection for Errors
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//Create Connection for Xenforo Forum Database
$XenConnection=mysqli_connect("URL","username","password","database");
//Check Xenforo Forum Database Connection for Errors
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
############################################
###Password Protection for Initialization###
############################################
//Sanitize Password Passed From xenForo and Redirect If Invalid ID
$Password = filter_var($_SERVER["QUERY_STRING"], FILTER_SANITIZE_ENCODED, FILTER_SANITIZE_EMAIL);
if($Password != 'Password')
{
header("Location: http://www.url.com/error.html");
echo 'Invalid String Length';
exit;
}
这是我开始初始化脚本的代码,我担心如果我选择继续使用此脚本的当前实现,我可能无法充分保护注入。
我已经读过变量过滤可以防止这种情况,但我也看到了可以忽略的示例,如果使用QUERY_STRING,可以在URL中使用语法来利用脚本。
答案 0 :(得分:1)
为了清理sql注入的字符串,你必须转义它的特殊字符。
基本mysqli_real_escape_string()
使用addslashes()
或更多。
要针对XSS清理字符串,请使用htmlentities()
虽然您不必清理密码,但只需对数据库密码进行哈希处理,以相同的方式对此进行哈希处理,然后对它们进行比较。 您不应该显示此客户端,因此无需针对XSS进行清理。