2012-03-19 113 views
-1

场景:我有一个插入的.php文件可以从我创建的PHP表格中插入到申请表中(列:firstnamelastnameclass)。但是,在PHP文件中有第三列是硬编码的:class更改PHP文件中的硬编码值

mysql_query("INSERT INTO applicant(firstname, lastname, class) VALUES ('$_POST[firstname]','$_POST[lastname]','Computer');

不时我可能要改变从电脑的价值。有没有办法让我改变它而不必打开PHP文件?例如,我可以通过在HTML表单中输入值来更改它吗?

+0

创建一个新的'秘密'网页表单/页面,它具有将这个新值写入文件'text.txt'的表单。现在,在insert.php中,使用文件读取函数,读取并获取'text.txt'中的值,并将其用作变量,比如'$ thirdColumn'。在你的INSERT查询中使用这个! – hjpotter92 2012-03-19 19:15:32

回答

0

在行将太深太快,我会扩展类的风险,你不希望使用EG:写着类:

mysql_query("INSERT INTO applicant(firstname, lastname, class) VALUES ('$_POST[firstname]','$_POST[lastname]','Computer'); 

可能是extended是一个类,其中第3个值是新班级的parameterpreset value

而且我会改变未延长类看起来像这样以避免注入攻击

mysql_query("INSERT INTO applicant(firstname, lastname, class) VALUES ('".mysql_real_escape_string($_POST[firstname])."','".mysql_real_escape_string($_POST[lastname])."','Computer'); 
+0

他们如何在不编辑PHP文件的情况下做到这一点? – octern 2012-03-19 19:33:30

+0

通过制作一个新文件来扩展它,就像所有人都说的那样,如果没有注射避免,你确实没有很好的形式 – conners 2012-03-19 19:58:46

1

这是一个非常糟糕的做法。这会打开SQL注入和跨站点脚本攻击。回答你的问题,是的。你可以用你提供的东西来做到这一点,并使用你做错了你的优势。

这里是你拥有的一切:

mysql_query("INSERT INTO applicant(firstname, lastname, class) VALUES ('$_POST[firstname]','$_POST[lastname]','Computer'); 

这是我能做到 在你的文本框为$ _ POST [“姓名”],'; INSERT INTO applicant(firstname, lastname, class) VALUES('$NEWVALUE', '$newValue', '$newValue'); SHOW TABLES; DROP TABLE applicant; --

+0

为了让您的观点更加清晰:仅将POST的值直接添加到SQL查询中是不好的做法。这并不意味着所有的查询都应该是静态的(没有来自用户的参数),只需要首先验证参数。 – bfavaretto 2012-03-19 19:16:36

+0

我甚至可以显示数据库;并删除所有数据库。 – Churk 2012-03-19 19:19:28

+0

向我指出一些好的做法恳请我是数据库的新手 – dames 2012-03-19 19:26:00

0

您可以使用页面与一个提交按钮和一个TextBox就可以了。让它将值存储在XML文档中,然后让您的代码打开XML文档以检索值。当然,这是假设您想要半永久性地存储值。

0

如果您修复上述漏洞,有让你插入之间切换的方式。在您的PHP代码上创建一个条件,并检查该条件。

if ($_POST['use_sql'] == 1) { 
// executeSQL1; 
} else { 
// executeSQL2; 
} 
0

此页面上的其他解决方案是聪明的黑客,但我将是一个扫兴的人,并说:不,你不能以任何方式的远程安全或稳定,没有编辑PHP文件,解决这个问题。谁写的PHP文件采取了他们不应该采取的捷径,现在你有一个脚本,你不能以合理的方式扩展。

如果你能访问到PHP文件,你需要做的是改变:

'computer' 

'$_POST[class]' 

,然后如果你在你的所谓输入表单有场“班级“,其价值将进入班级专栏。

如果问题是,你可以在服务器上编辑文件,但由于某种原因你不能编辑特定 PHP文件,你总是可以让具有相同内容的新的PHP文件,进行更改你需要,直接在那里输入表单(只需改变表单的ACTION属性来指向新的PHP文件而不是旧的)。