簡體   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