扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
string mysql_real_escape_string ( string unescaped_string [, resource link_identifier])
成都创新互联公司:2013年至今为各行业开拓出企业自己的“网站建设”服务,为上千公司企业提供了专业的成都网站设计、网站制作、网页设计和网站推广服务, 按需开发网站由设计师亲自精心设计,设计的效果完全按照客户的要求,并适当的提出合理的建议,拥有的视觉效果,策划师分析客户的同行竞争对手,根据客户的实际情况给出合理的网站构架,制作客户同行业具有领先地位的。
本函数将 unescaped_string 中的特殊字符转义,并计及连接的当前字符集,因此可以安全用于 mysql_query()。
注: mysql_real_escape_string() 并不转义 % 和 _。
例子 1. mysql_real_escape_string() 例子
?php
$item = "Zak's and Derick's Laptop";
$escaped_item = mysql_real_escape_string($item);
printf ("Escaped string: %s\n", $escaped_item);
?
以上例子将产生如下输出:
Escaped string: Zak\'s and Derick\'s Laptop
一,HTML防注入。
一般的html注入都是在字符串中加入了html标签,用下JAVA代码可以去掉这部分代码。
代码如下,自己封装成方法即可。
String msge = "asdasdasdasd div id=\"f\"asdfsdf";
System.out.println(msge);
msge = msge.replace("", "");
msge = msge.replace("", "");
msge = msge.replace(" ", " ");
msge = msge.replace("", "");
msge = msge.replace("\"", """);
msge = msge.replace("'", "qpos;");
System.out.println(msge);
二、防SQL注入
最简单最容易的是限制用户输入。
简单点的就是不允许用户输入单引号 和 --,因为单引号号--在SQL中都是影响执行的。
但SQL注入是多方面的,防止的方法也有很多种。
1、地址栏禁止特殊字符防SQL注入
把特殊字符(如and、or、'、")都禁止提交就可以防止注入了。
2、php过滤html字符串,防止SQL注入
批量过滤post,get敏感数据
$_GET = stripslashes_array($_GET);
$_POST = stripslashes_array($_POST);
数据过滤函数
function stripslashes_array($array) {
while(list($key,$var) = each($array)) {
if ($key != 'argc' $key != 'argv' (strtoupper($key) != $key || ''.intval($key) == "$key")) {
if (is_string($var)) {
$array[$key] = stripslashes($var);
}
if (is_array($var)) {
$array[$key] = stripslashes_array($var);
}
}
}
return $array;
}
3、替换HTML尾标签
function lib_replace_end_tag($str)
{
if (empty($str)) return false;
$str = htmlspecialchars($str);
$str = str_replace( '/', "", $str);
$str = str_replace("\\", "", $str);
$str = str_replace("", "", $str);
$str = str_replace("", "", $str);
$str = str_replace("SCRIPT", "", $str);
$str = str_replace("/SCRIPT", "", $str);
$str = str_replace("script", "", $str);
$str = str_replace("/script", "", $str);
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace("modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cas","cast",$str);
$str=str_replace("","",$str);
$str=str_replace("","",$str);
$str=str_replace("","",$str);
$str=str_replace(" ",chr(32),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace("",chr(34),$str);
$str=str_replace("'",chr(39),$str);
$str=str_replace("br /",chr(13),$str);
$str=str_replace("''","'",$str);
$str=str_replace("css","'",$str);
$str=str_replace("CSS","'",$str);
return $str;
}
三、专业的事情交给专业的工具去做。
安装安全软件。例如,在服务器中安装“服务器安全狗”,可以设置防注入,防攻击的设置,只要设置好安全规则,就可以屏蔽大多数攻击入侵。
当然需要,$_GET取得的数据是来自URL后的参数,这个是可以自己在地址栏里随便写的,而$_POST的数据来自表单提交,虽然在前端可以设置JS验证数据合法性,但是别有用心的人可以很容易地绕过这个JS验证脚本,所以,在后台接收到这些数据后,首先要做的,就是用过滤或者验证函数进行进一步地处理
//php 批量过滤post,get敏感数据
if (get_magic_quotes_gpc()) {
$_GET = stripslashes_array($_GET);
$_POST = stripslashes_array($_POST);
}
function stripslashes_array($array) {
while(list($key,$var) = each($array)) {
if ($key != 'argc' $key != 'argv' (strtoupper($key) != $key || ''.intval($key) == "$key")) {
if (is_string($var)) {
$array[$key] = stripslashes($var);
}
if (is_array($var)) {
$array[$key] = stripslashes_array($var);
}
}
}
return $array;
}
//--------------------------
// 替换HTML尾标签,为过滤服务
//--------------------------
function lib_replace_end_tag($str)
{
if (empty($str)) return false;
$str = htmlspecialchars($str);
$str = str_replace( '/', "", $str);
$str = str_replace("\\", "", $str);
$str = str_replace("gt", "", $str);
$str = str_replace("lt", "", $str);
$str = str_replace("SCRIPT", "", $str);
$str = str_replace("/SCRIPT", "", $str);
$str = str_replace("script", "", $str);
$str = str_replace("/script", "", $str);
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace("modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cas","cast",$str);
$str=str_replace("","",$str);
$str=str_replace("","",$str);
$str=str_replace("","",$str);
$str=str_replace(" ",chr(32),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace("",chr(34),$str);
$str=str_replace("'",chr(39),$str);
$str=str_replace("br /",chr(13),$str);
$str=str_replace("''","'",$str);
$str=str_replace("css","'",$str);
$str=str_replace("CSS","'",$str);
return $str;
}
首先命药明白POST,GRT,COOKIE,其实它是一个数组。
你可以print_r($_POST)就明白了
所以你一可以写一个方法,
public function a ($_POST){
foreach($_POST as $val) {
/将所有的值过滤掉后赋予一个新的数组
}
return $arr;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流