PHP SQL注入防止、馬掛け防止、クロスステーション攻撃防止
2298 ワード
SQL注入攻撃は、攻撃者がフォームやアドレスバーに丹念に構築されたsql文を提出し、元のsql文を変更し、プログラムが提出したデータを厳格に検査しなければ、sql注入攻撃をもたらす.
SQL注入はデータベースを操作するため、一般的にSQL文キーワード:insert、delete、update、selectを検索し、渡された変数パラメータがユーザーが制御できるかどうか、安全処理をしたことがあるかどうかを確認します.
SQL注入攻撃を防止するいくつかの関数:
SQL注入はデータベースを操作するため、一般的にSQL文キーワード:insert、delete、update、selectを検索し、渡された変数パラメータがユーザーが制御できるかどうか、安全処理をしたことがあるかどうかを確認します.
SQL注入攻撃を防止するいくつかの関数:
/**
+----------------------------------------------------------
* 、 、 sql
+----------------------------------------------------------
*$date , ;$ignore_magic_quotes
+----------------------------------------------------------
*/
function in($data,$ignore_magic_quotes=false)
{
if(is_string($data))
{
$data=trim(htmlspecialchars($data));// ,
if(($ignore_magic_quotes==true)||(!get_magic_quotes_gpc()))
{
$data = mysql_real_escape_string($data);// sql
}
return $data;
}
else if(is_array($data))//
{
foreach($data as $key=>$value)
{
$data[$key]=in($value);
}
return $data;
}
else
{
return $data;
}
}
は更に関数を貼って、他の人がhtmlとiframeのを残すことを防ぎますfunction html_in($str)
{
$search = array ("'<script[^>]*?>.*?</script>'si", // javascript
"'<iframe[^>]*?>.*?</iframe>'si", // iframe
);
$replace = array ("",
"",
);
$str=@preg_replace ($search, $replace, $str);
$str=htmlspecialchars($str);
if(!get_magic_quotes_gpc())
{
$str = addslashes($str);
}
return $str;
}
discuzのphp防止sql注入関数:$magic_quotes_gpc = get_magic_quotes_gpc();
@extract(daddslashes($_COOKIE));
@extract(daddslashes($_POST));
@extract(daddslashes($_GET));
if(!$magic_quotes_gpc) {
$_FILES = daddslashes($_FILES);
}
function daddslashes($string, $force = 0) {
if(!$GLOBALS['magic_quotes_gpc'] || $force) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = daddslashes($val, $force);
}
} else {
$string = addslashes($string);
}
}
return $string;
}