安全的php变量,然后将其插入数据库

时间:2012-02-05 16:07:01

标签: php

这够了吗?

function cleanVar($str1){
 if(get_magic_quotes_gpc() == 0){
  $str1 = addslashes(htmlspecialchars($str1));
 }
 $str1 = stripslashes($str1);
 $str1 = htmlspecialchars($str1);
 $str1 = strip_tags($str1);
 $str1 = mysql_real_escape_string($str1);
 $str1 = str_replace("script","",$str1);
 $str1= str_replace("body","",$str1);
 $str1 = str_replace("select","",$str1);
 $str1= str_replace("insert","",$str1);
 $str1= str_replace("update","",$str1);
 $str1 = str_replace("on","",$str1);
 $str1= str_replace("<","&l",$str1);
 $str1 = str_replace(">","&",$str1);
 $str1 = trim($str1);
 return $str1;
}

3 个答案:

答案 0 :(得分:3)

如果可能,请使用PDO&amp;准备好的陈述它为您处理所有这些并确保您不会丢失任何数据(条带标签有些奇怪)

答案 1 :(得分:1)

$str1 = str_replace("script","",$str1);
$str1= str_replace("body","",$str1);
$str1 = str_replace("select","",$str1);
$str1= str_replace("insert","",$str1);
$str1= str_replace("update","",$str1);
$str1 = str_replace("on","",$str1);

如果将此函数应用于包含以下内容的字符串,将会发生什么:“这是对伊拉克局势更新的评论”。你会删除太多的信息。

PDO很棒,您应该考虑从过时的mysql库切换到它。

答案 2 :(得分:-1)

查看OWASP预防表,这几乎涵盖了

 & --> &amp;
 < --> &lt;
 > --> &gt;
 " --> &quot;
 ' --> &#x27;     &apos; is not recommended
 / --> &#x2F;     forward slash is included as it helps end an HTML entity

https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

SQL注入也包含在此中。

替换实际的SQL语句也有点奇怪,如果要在数据库中保存实际的单词,它可能会成为一个问题。