【发布时间】:2011-10-15 00:23:45
【问题描述】:
让我尽可能解释清楚。
我有一个名为 funcs.php 的 PHP 文件,其中正是这个 PHP 代码:
$q = $_GET["q"];
$sql = "SELECT * FROM bl_zrify WHERE Name = '".$q."'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
if ($row['State'] == '') {
$SchoolState = 'Unknown';
}
else if ($row['State'] == 'AL') {
$SchoolState = 'Alabama';
}
else if ($row['State'] == 'AK') {
$SchoolState = 'Alaska';
}
else if ($row['State'] == 'AZ') {
$SchoolState = 'Arizona';
}
else if ($row['State'] == 'AR') {
$SchoolState = 'Arkansas';
}
print 'This school is in';
print $SchoolState;
}
当我在浏览器中调用时:
网址示例 => http://www.domain.com/funcs.php?q=ABRAHAM BALDWIN AGRICULTURAL COLLEGE
它正常工作并返回 => 这所学校在阿拉巴马州
但是,当我在浏览器中调用任何包含 & (&) 的 URL 时,将根本无法工作:
url 示例 => http://www.domain.com/funcs.php?q=BRYANT 和 STRATTON 商学院 - 布法罗
我不知道为什么,但由于某种原因,当 URL 中有 amp (&) 时我没有得到任何结果,请帮助!
【问题讨论】:
-
在查询中使用传递的参数是一种非常糟糕的做法。你至少应该逃避它。
-
Little Bobby Tables 将拜访您。
-
Aleks 是对的 - 你要求被该代码破解
-
:-) Bobby 真是个好孩子
-
进入表格并输入以下学校名称:
Foo'); DROP TABLE bl_zrify; --然后阅读bobby-tables.com