PHP脚本,查询从传入的值运行

时间:2010-12-21 08:16:19

标签: php variables

我是非常新的PHP,快速注意这是一个Android应用程序,我正在调用此脚本,我没有用户编写脚本大声笑。有一系列复选框,当它们检查某些复选框时,它会将一个脚本附加到字符串生成器。我试图根据传入的变量的值运行查询。通常我做这样的事情,

   mssql_query("UPDATE Userdata SET BrowseScript = '".$_REQUEST['sqlscript']."' 
WHERE Userdata.Username = '".$_REQUEST['Username']."'");

以及它所说的位置。$_REQUEST['']我可以抓住我传入的值。

但是这次.$_REQUEST['']是整个脚本,所以我想要这样的东西

mssql_query($_REQUEST['sqlscript']);

,多数民众赞成它,我希望它运行该值的查询,查询是正确的,但它只是不会返回任何值,我想我可能有某种类型的语法错误或东西,像我说我是新的PHP。谢谢你的帮助。此外,我不发布整个代码,因为一切运行正常,我只是无法运行该查询。所以我需要帮助的是mssql_query部分再次感谢。

3 个答案:

答案 0 :(得分:0)

首先,你正在做的事情存在巨大的安全漏洞。您应该始终使用mysql_real_escape_string或预准备语句对查询中使用的变量进行清理和转义。

由于您要为查询导入整个脚本,因此可能不会对引号进行转义。您需要在变量之前放置这样的函数:

mysql_real_escape_string($_REQUEST['your_var']);

使用$_REQUEST本身而不是正确的$_GET$_POST容易受到攻击。

答案 1 :(得分:0)

对于所有圣洁的人,不要这样做!

只使用请求参数并将它们放在SQL查询中。你至少使用mysql_real_escape_string(或任何MSSQL等价物,从未使用它)。而且你肯定不接受请求中的整个查询并且看不见它们。

你正在打开巨大的安全漏洞。特别是如果你是新手,在它成为一种习惯之前就停止它!

example.com/foo.php?sqlscript=DROP TABLE users

最低要求讲座:http://www.php.net/manual/en/security.database.sql-injection.php

答案 2 :(得分:0)

  1. 告诉你的脚本输出$ _REQUEST ['sqlscript']的内容

    echo $ REQUEST ['sqlscript'];

  2. 检查输出是否正确。您可能会发现存在一些解析错误,或者只是您的脚本不完整。检查引号(“)并确保查询有效。

  3. 此外,您应从不从请求中运行脚本。想象一下,如果有人浏览了您的网站并输入了

    youtsite.com?sqlscript='drop * from tables';

  4. 您的整个数据库都将被删除。