Abd*_*ziz 2 javascript php database security jquery
我目前正在创建一个基于jQuery验证器插件的表单验证脚本.因此,简单的配置变得简单,如最小长度,最大长度,所需等等.
之后,我决定检查来自客户端的用户名/电子邮件的可用性,所以我不得不使用remote选项,这是一个选项我必须在创建规则数组时指定.因此,在创建规则时,我必须将数据发送到php脚本并检查输入字段的可用性.
但是由于我要检查多个输入字段的可用性,我创建了一个函数(在客户端)为每个字段重用它,该函数需要输入字段的ID和MySQL表的名称,把事情弄清楚,这是功能:
注意:
1.check_input是一个php脚本,它将获取输入字段的值和要检查的表,它将返回一个json编码的布尔值,如果表中没有匹配则为true,否则为false.
function check_input(input, table){
$.ajax({
type:"POST",
url:site_url+"site/check_input",
data:{
input:input,
table:table,
}
}).done(function(resp){
var is_unique = JSON.parse(resp);
return is_unique;
});
}
Run Code Online (Sandbox Code Playgroud)
并通过将remote选项设置为来调用此函数
check_input($('#field').val(), 'table.column');.
所以,正如你所看到的,我必须从客户端指定我的MySQL表,并且每个用户(好的和坏的)都能看到这个,这被认为是不安全还是不好的做法?
如果不是,检查可用性的合适方法是什么?
这是糟糕的设计实践,因为您应该将数据库模式与客户端视图代码分离(如果要更改数据库模式,该怎么办).
这是一种糟糕的安全实践,因为它看起来像是在使用字符串来构建SQL查询.如果您不了解SQL注入攻击,请了解它们.这是一个经典案例.
投入额外的工作并创建一个不需要公开表名的正确PHP API.