首页 > 开发 > PHP > 正文

PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】

2024-05-04 22:46:28
字体:
来源:转载
供稿:网友

本文实例讲述了PHP实现表单提交数据的验证处理功能。分享给大家供大家参考,具体如下:

防XSS攻击代码:

/** * 安全过滤函数 * * @param $string * @return string */function safe_replace($string) { $string = str_replace('%20','',$string); $string = str_replace('%27','',$string); $string = str_replace('%2527','',$string); $string = str_replace('*','',$string); $string = str_replace('"','"',$string); $string = str_replace("'",'',$string); $string = str_replace('"','',$string); $string = str_replace(';','',$string); $string = str_replace('<','<',$string); $string = str_replace('>','>',$string); $string = str_replace("{",'',$string); $string = str_replace('}','',$string); $string = str_replace('//','',$string); return $string;}

代码实例:

<?php$user_name = strim($_REQUEST['user_name']);function strim($str){ //trim() 函数移除字符串两侧的空白字符或其他预定义字符。 //htmlspecialchars() 函数把预定义的字符转换为 HTML 实体(防xss攻击)。 //预定义的字符是: //& (和号)成为 & //" (双引号)成为 " //' (单引号)成为 ' //< (小于)成为 < //> (大于)成为 > return quotes(htmlspecialchars(trim($str)));}//防sql注入function quotes($content){ //if $content is an array if (is_array($content)) {  foreach ($content as $key=>$value)  {   //$content[$key] = mysql_real_escape_string($value);   /*addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。   预定义字符是:   单引号(')   双引号(")   反斜杠(/)   NULL */   $content[$key] = addslashes($value);  } } else {  //if $content is not an array  //$content=mysql_real_escape_string($content);  $content=addslashes($content); } return $content;}?>
//过滤sql注入function filter_injection(&$request){ $pattern = "/(select[/s])|(insert[/s])|(update[/s])|(delete[/s])|(from[/s])|(where[/s])/i"; foreach($request as $k=>$v) {    if(preg_match($pattern,$k,$match))    {      die("SQL Injection denied!");    }    if(is_array($v))    {     filter_injection($request[$k]);    }    else    {     if(preg_match($pattern,$v,$match))     {      die("SQL Injection denied!");     }    } }}

防sql注入:

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。

下列字符受影响:

/x00
/n
/r
'

/x1a

如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。

语法

mysql_real_escape_string(string,connection)

参数 描述
string 必需。 规定要转义的字符串。
connection 可选。 规定 MySQL 连接。如果未规定,则使用上一个连接。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表