Php 在mysql插入查询中阻止攻击性词语、阻止链接等?

Php 在mysql插入查询中阻止攻击性词语、阻止链接等?,php,html,mysql,Php,Html,Mysql,嗨,我在运行一个mysql插入查询,其想法是用户可以向用户档案提交评论,但我想知道是否有一种方法可以阻止攻击性的词语、链接,并防止人们用博客链接等方式对其进行垃圾邮件 我是否会使用php if语句来表示忽略这些关键字;“f*ck”等等,我觉得这样的事情唯一的问题是我必须在ignore语句中涵盖每个词 或者我会在我的mysql中包含一些东西,无论是哪种方式,我都想阻止所有插入表单的链接 有人能给我一些指导,告诉我怎么做吗 html: 您可以尝试从“坏词”表中获取值。如下所示 $blocked_wo

嗨,我在运行一个mysql插入查询,其想法是用户可以向用户档案提交评论,但我想知道是否有一种方法可以阻止攻击性的词语、链接,并防止人们用博客链接等方式对其进行垃圾邮件

我是否会使用php if语句来表示忽略这些关键字;“f*ck”等等,我觉得这样的事情唯一的问题是我必须在ignore语句中涵盖每个词

或者我会在我的mysql中包含一些东西,无论是哪种方式,我都想阻止所有插入表单的链接

有人能给我一些指导,告诉我怎么做吗

html:


您可以尝试从“坏词”表中获取值。如下所示

$blocked_words=array();
$q="select words from block";
$rs=mysql_query($q);
while($rd=mysql_fetch_object($rs))
{
$blocked_words[]=$rd->words;
}
$string_words=explode(" ", $_POST['review_content']);  
$result = array_intersect($blocked_words, $string_words);  

通过以上代码,您可以将表“block”中的所有单词转换为$blocked_单词。您可能需要根据需要进行更改。您可以尝试从bad words表中获取值。如下所示

$blocked_words=array();
$q="select words from block";
$rs=mysql_query($q);
while($rd=mysql_fetch_object($rs))
{
$blocked_words[]=$rd->words;
}
$string_words=explode(" ", $_POST['review_content']);  
$result = array_intersect($blocked_words, $string_words);  
$blocked_words="test1,test2,test3,test4";//list of offensive word
$review_from_user ="Your reviews test2 is following hello test1"; //review from user 


$blocked_words_expo = explode(",", $blocked_words);  

foreach($blocked_words_expo as $rmv)
{
    if(strpos($review_from_user,$rmv)==true)
    {
        $review_from_user = str_replace($rmv,'',$review_from_user); 
    }
}
echo $review_from_user;

//and then insert $review_from_user

通过以上代码,您可以将表“block”中的所有单词转换为$blocked_单词。您可能需要根据您的需要进行更改

强制性:此外,您的代码中存在SQL注入漏洞。因此,在这一点上,人们在你的数据库中插入坏话是你最不关心的。请:1)停止使用
mysql\u*
,至少更新到
mysqli\u*
,甚至可能是我们的PDO;2) 不要直接将用户输入连接到SQL命令中,而是使用准备好的/参数化的语句;3) 在对用户输入进行任何操作之前,请始终验证和清理用户输入。你不能阻止它,你只能尝试减少它,想想外来词、字符替换、多字节字符等。如果有人真的想发誓,他们会找到一种方法来做。当然,你可以阻止它。您可以提供一个可接受的单词或短语库。这样做的缺点是,它显然是非常有限和令人沮丧的,可能会导致一些用户发表如下评论:;-)这类事情通常最好由主持人来处理。自动过滤器有导致误报的倾向;ie阻止了他们不应该做的事情,这会让你的用户感到不安。对于那些真的想粗鲁对待过滤器的人来说,绕过过滤器总是很容易的,因此如果你担心这类事情,即使你有过滤器,你也必须手动调节网站。强制性:另外,你的代码中存在SQL注入漏洞。因此,在这一点上,人们在你的数据库中插入坏话是你最不关心的。请:1)停止使用
mysql\u*
,至少更新到
mysqli\u*
,甚至可能是我们的PDO;2) 不要直接将用户输入连接到SQL命令中,而是使用准备好的/参数化的语句;3) 在对用户输入进行任何操作之前,请始终验证和清理用户输入。你不能阻止它,你只能尝试减少它,想想外来词、字符替换、多字节字符等。如果有人真的想发誓,他们会找到一种方法来做。当然,你可以阻止它。您可以提供一个可接受的单词或短语库。这样做的缺点是,它显然是非常有限和令人沮丧的,可能会导致一些用户发表如下评论:;-)这类事情通常最好由主持人来处理。自动过滤器有导致误报的倾向;ie阻止了他们不应该做的事情,这会让你的用户感到不安。对于那些真的想表现得粗鲁的人来说,绕过一个过滤器总是很容易的,所以如果你担心这类事情,即使你有一个过滤器,你也必须手动调整网站。只是要注意一些错误;)小心那些错误;)
$blocked_words="test1,test2,test3,test4";//list of offensive word
$review_from_user ="Your reviews test2 is following hello test1"; //review from user 


$blocked_words_expo = explode(",", $blocked_words);  

foreach($blocked_words_expo as $rmv)
{
    if(strpos($review_from_user,$rmv)==true)
    {
        $review_from_user = str_replace($rmv,'',$review_from_user); 
    }
}
echo $review_from_user;

//and then insert $review_from_user