繁体   English   中英

使用Jquery选择SQL表列-SQL注入?

[英]Selecting SQL table column with Jquery - SQL injection?

我正在寻找有关哪种方法更安全,更有效地使用的建议。

选项A:我有一个名为Calendar的数据库,其中有12个表-“ January”,“ February”等。每个月都有它自己的.php页面,带有“ select * from jan”等。我有一个下拉菜单,当用户选择例如“ January”,我有一个ajax脚本,然后将jan.php加载到div“ currentmonth”中

我当时想做的是,因为除了“ currentmonth” div外,我还拥有一个“ recentlyadded” div,它显示了按时间戳排序的最后3个条目。 我不确定如何显示整个数据库中最近添加的3个条目,因此我尝试了选项B。

选项B:我有一个称为日历的表,每一行都有一个称为月的列。 这样可以更轻松地显示最近添加的内容,但是我不确定如何实现下拉菜单。 从我已经读过的想法中,我可以让我接受sql注入。

这是一个想法:我有一个名为“ selectedmonth”的jquery变量,它等于所选月的值。 然后,我想使用该变量...例如,用户选择“ January”,值是“ jan”,然后我想用SELECT * FROM calendar WHERE months =“ jan”来更新sql语句,但是正如我所说,我听说这可以让我对SQL注入敞开大门。

无论如何,是否可以使用AJAX或JSON动态更新SQL语句? 有没有一种方法可以做选项B,而又不让我自己接受SQL注入? 还是我可以使用一种更简单的方法来使用选项A,并且能够找到整个数据库中最近添加的3行?

我想知道的一件事是选项A,我显然会有12个“ month” .php文件,这会增加页面加载时间吗?

任何建议将不胜感激。

使用准备好的语句,您应该没事。 第二个选择是可取的,第一个不是一个好主意...

您所要做的就是:

$row = $conn->prepare("SELECT * FROM calendar WHERE months = ?");
$row->bind_param('s', $_GET['month']);
$row->execute();
$row = $row->get_result();

而且您将无需进行SQL注入。 在这里阅读更多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM