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

Php脚本,从传入的值运行查询,php,variables,Php,Variables,我对php非常陌生,请注意,这是一个android应用程序,我称之为脚本,我没有让用户编写脚本lol。有一系列复选框,当他们选中某些复选框时,它会将脚本附加到字符串生成器。我正在尝试根据传入的变量的值运行查询。通常我会这样做 mssql_query("UPDATE Userdata SET BrowseScript = '".$_REQUEST['sqlscript']."' WHERE Userdata.Username = '".$_REQUEST['Username']."'");

我对php非常陌生,请注意,这是一个android应用程序,我称之为脚本,我没有让用户编写脚本lol。有一系列复选框,当他们选中某些复选框时,它会将脚本附加到字符串生成器。我正在尝试根据传入的变量的值运行查询。通常我会这样做

   mssql_query("UPDATE Userdata SET BrowseScript = '".$_REQUEST['sqlscript']."' 
WHERE Userdata.Username = '".$_REQUEST['Username']."'");
以及它的位置。
$\u请求['']
我可以获取传入的值

但是这次,
$\u请求['']
是整个脚本,所以我想要这样的东西

mssql_query($_REQUEST['sqlscript']);

就是这样,我想让它运行这个值中的查询,这个查询是正确的,但是它不会返回任何值,我想我可能有一些语法错误或者其他什么,就像我说的我是php新手。谢谢你的帮助。另外,我没有发布全部代码,因为一切都正常运行,我只是无法运行该查询。因此,我所需要的帮助是mssql_查询部分,再次感谢。

首先,您所做的工作存在巨大的安全漏洞。您应该始终清理和转义查询中使用的变量,例如使用或准备好的语句

因为您要为查询导入整个脚本,所以可能没有转义引号。您需要将以下函数放在变量之前:

mysql_real_escape_string($_REQUEST['your_var']);

使用
$\u REQUEST
本身而不是正确的
$\u GET
$\u POST
易受攻击。

尽管神圣,但不要这样做

您不仅仅使用请求参数并将它们放入SQL查询中。您至少可以使用它(或者无论MSSQL等价物是什么,都不要使用它)。而且,您肯定不会接受请求中的整个查询并在看不见的情况下执行它们

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

example.com/foo.php?sqlscript=DROP TABLE users
最低要求讲座:

  • 告诉脚本输出$\u请求['sqlscript']的内容

    echo$REQUEST['sqlscript']

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

  • 此外,您应该永远不要运行请求中的脚本

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


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

    在插入数据库之前对输入进行完整性检查,请参阅googlesooo中的sql注入,您能告诉我我的ms_查询行的外观吗mysql@user516883:只需在您的查询变量之前添加
    mysql\u real\u escpae\u string
    函数,例如`mssql\u query('更新Userdata SET BrowseScript=''.mysql\u real\u escpae\u string($\u REQUEST['sqlscript'])。“'WHERE Userdata.Username='”。mysql\u real\u escpae\u string($\u REQUEST['Username'])。“”)`我不明白?我没有像运行查询那样运行查询,查询是一个通过android应用程序传递的值,没有涉及任何网站,用户没有提供sql脚本,有一系列复选框,当他们单击stringbuilder时,会创建运行的sql脚本。请提供完整ms_sql代码的帮助,谢谢!可以吗输出echo$REQUEST['sqlscript']的值;下面是我如何从所有php脚本中获取数据的方法,而不是我现在要发布的内容,我不知道;