小编ase*_*ues的帖子

使用utf和单引号时可以绕过addslashes吗?

我正在尝试验证在脚本上使用addslashes是否可被利用,众所周知,不应该使用addslashes,但是问题是,它总是可被利用吗?

我发现了大量关于在字符集不是 utf8(使用双字节转换)以及变量被“”括起来的两种情况下滥用 addslashes 的信息

那么,当上述情况都没有发生时,是否可以绕过addslashes?这是我一直在测试的代码:

带有数据库转储的 data.sql 文件:

CREATE TABLE IF NOT EXISTS `test` (
  `user` varchar(25) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `test` (`user`) VALUES
('admin'),
('user');

mysql -u test -ptestpw test < data.sql
Run Code Online (Sandbox Code Playgroud)

index.php 放置在服务器中

<?php
  //Server script the receives content via post
  mysql_connect("localhost","test","testpw");
  mysql_select_db("test");
  $user=addslashes($_POST['username']);
  $query="SELECT * FROM test WHERE user='".$user."'";
  $q=mysql_query($query) or die (mysql_error());
  $num_rows = mysql_num_rows($q);
  echo "Listed rows: $num_rows";
  if ($num_rows > 0) {
        $a=mysql_fetch_array($q);
        print_r($a);
  }
?> …
Run Code Online (Sandbox Code Playgroud)

php security addslashes

5
推荐指数
1
解决办法
9237
查看次数

标签 统计

addslashes ×1

php ×1

security ×1