繁体   English   中英

字符串中的PHP黑名单单词

[英]PHP Blacklist words in String

我有一段Java代码可以生成动态XML字符串。 然后将此XML字符串传递到PHP文件,在此我需要检查以确保该字符串不包含任何可能导致SQL注入的不良单词。

我认为我只会创建一个黑名单,如果找到任何单词,我们只是不将XML发送到数据库。

但是,当我传入一个或多个黑名单单词时,我的代码片段未返回true。

// Create a blacklist array
$blacklist = Array('create', 'alter', 'update', 'delete', 'drop', 'insert', 'into', 'from', 'where');

// Define our vars
$xml = '<blah>alert table drop something create</blah>';
$actor = $_COOKIE['QID'];
$sp = $_POST['sp'];

// Lets check the XML string to see if it contains any database altering words
function contains($str, array $arr)
{
    foreach($arr as $a) {
        if (stripos($a,$str) !== false) return true;
    }
    return false;
}

// Check our XML string
if(contains($xml, $blacklist))
{
    echo 'Contains';
}
else
{
    echo 'Does not contain';
}

有没有更好的方法来处理这种检查? 我不确定要搜索什么,因此认为单词黑名单就足够了。

调用stripos时,参数顺序错误。 您需要stripos($str,$a)而不是stripos($a,$str) stripos($str,$a) 第一个版本是在单个“坏”字中搜索整个XML字符串。 第二个在XML字符串中搜索单词。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM