在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一:为了网站数据安全,所有和数据库操作的相关参数必须做相关过滤,防止注入引起的网站中毒和数据泄漏 1.PHP自带效验函数 mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。 受影响的字符串:\x00、\n、\r、\、'、"、\x1a ==>攻击实例
<?php $con = mysql_connect("localhost", "hello", "321"); if (!$con) { die('Could not connect: ' . mysql_error()); } $sql = "SELECT * FROM users WHERE user='{$_POST['user']}' AND password='{$_POST['pwd']}'"; mysql_query($sql); // 不检查用户名和密码 // 可以是用户输入的任何内容,比如: $_POST['user'] = 'john'; $_POST['pwd'] = "' OR ''='"; mysql_close($con); ?>
上面代码的结果是:SELECT * FROM users WHERE user='john' AND password='' OR ''=''。这就意味着不用密码可以自由登入系统。 ==>简单的参数效验 1 <?php 2 function check_input($value) 3 { 4 // 去除斜杠 5 if (get_magic_quotes_gpc()) 6 { 7 $value = stripslashes($value); 8 } 9 // 如果不是数字则加引号 10 if (!is_numeric($value)) 11 { 12 $value = "'" . mysql_real_escape_string($value) . "'"; 13 } 14 return $value; 15 } 16 17 $con = mysql_connect("localhost", "hello", "321"); 18 if (!$con) 19 { 20 die('Could not connect: ' . mysql_error()); 21 } 22 23 // 进行安全的 SQL 24 $user = check_input($_POST['user']); 25 $pwd = check_input($_POST['pwd']); 26 $sql = "SELECT * FROM users WHERE 27 user=$user AND password=$pwd"; 28 29 mysql_query($sql); 30 31 mysql_close($con); 32 ?>
==>防止js注入 例如:http://url?act="<script>XXXXXX</script>",要确保参数的正确性,我们需要过滤掉PHP标签 1 <?php 2 function check_input($value) 3 { 4 // 去除斜杠 5 if (get_magic_quotes_gpc()) 6 { 7 $value = stripslashes($value); 8 } 9 10 //过滤掉html标签 11 $value = strip_tags($value); 12 13 // 如果不是数字则加引号 14 if (!is_numeric($value)) 15 { 16 $value = "'" . mysql_real_escape_string($value) . "'"; 17 } 18 return $value; 19 } 20 21 $con = mysql_connect("localhost", "hello", "321"); 22 if (!$con) 23 { 24 die('Could not connect: ' . mysql_error()); 25 } 26 27 // 进行安全的 SQL 28 $user = check_input($_POST['user']); 29 $pwd = check_input($_POST['pwd']); 30 $sql = "SELECT * FROM users WHERE 31 user=$user AND password=$pwd"; 32 33 mysql_query($sql); 34 35 mysql_close($con); 36 ?>
二:总结 要完全防止sql注入,我们要从源头上做起,接收到的参数可以控制参数类型,对参数进行转义等等,转义常用的有如下几种 A,用addslashes()函数转义。
|
2022-08-17
2022-11-06
2022-07-18
2022-08-17
2022-08-15
请发表评论