【发布时间】:2013-02-27 03:15:03
【问题描述】:
我一直在为一个视频网站做一个项目。它从数据库中提取信息并在需要的地方插入详细信息。
到目前为止,一切都运行良好,但我刚刚进行了 SQL 注入测试,一切都完全开放。我一直在寻找答案以关闭它并使事情更安全。
我已经尝试实现 PDO 语句,但我无法理解它。这个月我只在研究 php/sql,所以我非常新。
任何帮助或其他解决方案都会很棒,下面的代码是我页面的主要连接点,我认为这也是最脆弱的部分
<?php
$username="********";
$password="*******";
$database="*******";
$id = $_GET['id'];
$badchars = array("\"", "\\", "/", "*", "'", "=", "-", "#", ";", "<", ">", "+", "%");
$myid = str_replace($badchars, "", $id);
mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$result = mysql_query("SELECT * FROM Videos WHERE id='$id'");
while($row = mysql_fetch_array($result)) {
$title=mysql_result($result,0,"title");
$url=mysql_result($result,0,"url");
$id=mysql_result($result,0,"id");
$description=mysql_result($result,0,"description");
$source=mysql_result($result,0,"source");
$type=mysql_result($result,0,'type');
}
?>
【问题讨论】:
-
不要尝试让你自己的 SQL 更干净,使用提供给你的那个。
mysql_real_escape_string. -
你试过的 PDO 代码是什么?
-
mysql_fetch_array为您提供所有字段,您无需使用mysql_result也。 -
感谢 Rocket 的提示,等我回到笔记本电脑上,我会尝试挖掘我以前的代码
标签: php sql pdo sql-injection