我是非常新的PHP,快速注意这是一个Android应用程序,我正在调用此脚本,我没有用户编写脚本大声笑。有一系列复选框,当它们检查某些复选框时,它会将一个脚本附加到字符串生成器。我试图根据传入的变量的值运行查询。通常我做这样的事情,
mssql_query("UPDATE Userdata SET BrowseScript = '".$_REQUEST['sqlscript']."'
WHERE Userdata.Username = '".$_REQUEST['Username']."'");
以及它所说的位置。$_REQUEST['']
我可以抓住我传入的值。
但是这次.$_REQUEST['']
是整个脚本,所以我想要这样的东西
mssql_query($_REQUEST['sqlscript']);
,多数民众赞成它,我希望它运行该值的查询,查询是正确的,但它只是不会返回任何值,我想我可能有某种类型的语法错误或东西,像我说我是新的PHP。谢谢你的帮助。此外,我不发布整个代码,因为一切运行正常,我只是无法运行该查询。所以我需要帮助的是mssql_query部分再次感谢。
答案 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)
告诉你的脚本输出$ _REQUEST ['sqlscript']的内容
echo $ REQUEST ['sqlscript'];
检查输出是否正确。您可能会发现存在一些解析错误,或者只是您的脚本不完整。检查引号(“)并确保查询有效。
此外,您应从不从请求中运行脚本。想象一下,如果有人浏览了您的网站并输入了
youtsite.com?sqlscript='drop * from tables';
您的整个数据库都将被删除。