登录无论get还是post,传过的数据如果不过滤,就可以通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.
在用户名输入框中输入:' or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为“#”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容,这样就不会去执行了,等价于下面代码
select * from user where username='' or 1=1
这也就是早期网友口中的万能密码。修复也是很简单的。就把关键字符过滤即可。
*** 1最简单
mysql_real_escape_string -- 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 !
*** 2
打开magic_quotes_gpc来防止SQL注入。php.ini中有一个设置:magic_quotes_gpc = Off这个默认是关闭的,如果它打开后将自动把用户提交对sql的查询进行转换,比如把 ' 转为 \'等,对于防止sql注射有重大作用。 如果magic_quotes_gpc=Off,则使用addslashes()函数
<?php $field = explode(',', $data); array_walk($field, array($this, 'add_special_char')); $data = implode(',', $field); /** * 对字段两边加反引号,以保证数据库安全 * @param $value 数组值 */ function add_special_char(&$value) { if ('*' == $value || false !== strpos($value, '(') || false !== strpos($value, '.') || false !== strpos($value, '`')) { //不处理包含* 或者 使用了sql *** 。 13 } else { $value = '`' . trim($value) . '`'; } return $value; } /* 函数名称:inject_check() 函数作用:检测提交的值是不是含有SQL注入的字符,保护服务器安全 参 数:$sql_str: 提交的变量inject_check($id) { exit('提交的参数非法!'); 返 回 值:返回检测结果,true or false */ function inject_check($sql_str) { return preg_match('/^select|insert|and|or|create|update|delete|alter|count|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/i', $sql_str); // 进行过滤 28 } //递归ddslashes function daddslashes($string, $force = 0, $strip = FALSE) { if (!get_magic_quotes_gpc() || $force) { if (is_array($string)) { foreach ($string as $key => $val) { $string [$key] = daddslashes($val, $force); } } else { $string = addslashes($strip ? stripslashes($string) : $string); } } return $string; } //递归stripslashes function dstripslashes($string) { if (is_array($string)) { foreach ($string as $key => $val) { $string [$key] = $this->dstripslashes($val); } } else { $string = stripslashes($string); } return $string; }
没事来唠嗑,你来听我说。几天前涛涛看一个图片网站不错,我就随口一说我给你把图片全扒下来吧。然后python不会,易语言太久没用过了。所以php上了,全自动开扒,创建目录 写入信息 下载图片。然后服务器...
效果是这样滴~ <meta http-equiv="refresh" content="1;url='<?php echo $url;?>';"> content是跳转时间...
今天在写模板的时候突发奇想,香弄一个节日倒计时,哎呀,太香了,老爸在做饭,居然打错字了,2333。 我心想尼玛中国这么多节日,,,日 要写到哪会呀,然后我就偷懒了,去找度娘。 找到了网钛写的PHP...
<?php header('Access-Control-Allow-Origin:*'); header('Content-Type:text/json;charset=utf8'); /*...
<?php //首先你要有读写文件的权限 //本程序可以直接运行,第一次报错,以缶涂梢? $online_log = "count.dat"; //保存人数的文件, $timeout = 30;...
思源简单整理 <?php header('HTTP/1.1 200 OK'); // ok 正常访问 header('HTTP/1.1 404 Not Found'); //通知浏览器 页面不存...