【发布时间】:2015-12-13 19:58:16
【问题描述】:
我有 sql 查询需要传递到 ajax 文件。
$qry = mysqli_query($this->con,"SELECT * FROM products");
我已经在html中包含了变量,例如:
<input type="button" data-qry="'.$qry.'" id="button" value="click">
我使用下面的ajax jquery代码来传递它:
$('#button').click(function(){
array = $(this).attr('data-qry');
$.ajax({
type : 'POST',
dataType : 'json',
url : 'ajax.php',
data : 'qry='+qry,
success : function(data) {
$('#result').html(data);
}
});
});
我希望能够打开ajax.php并执行
$qry = $_POST['qry'];
$row = mysqli_fetch_assoc($qry);
这当然行不通。我如何通过查询,是否需要通过 JSON 以某种方式完成?
【问题讨论】:
-
允许用户指定你正在执行的SQL查询听起来是一个非常危险的想法。希望您信任您的用户。
-
还有什么其他方法可以做到这一点?
-
这完全取决于你想要做什么。如果您希望您的用户编写自己的 SQL 查询,那么这种方法一旦奏效就很好。但真的不清楚为什么你要允许这样做。如果您的用户可以信任,那很好,但仍然值得一提,以防其他人遇到这个问题。
-
如果恶意用户找到了 AJAX 脚本发送到的页面,他们可以输入
delete from users(假设您有一个 users 表),然后您的所有用户都将被删除;除其他外(XSS 注入所有数据等)..
标签: php jquery mysql json ajax