如何使用PHP、MySQL和AJAX的组合让用户能够在数据库中输入保留字符?
我已经建立了一个网站,允许用户向数据库添加位置。但是,我不熟悉正则表达式,因此我不确定如何允许撇号和美元符号等字符,而不影响数据库插入 我有一个表单,由AJAX读取,并用PHP/MySQL处理,因此有些电子语言有自己的“保留”字符,可用于各种用途。实际上,在AJAX发送字符串之前,正则表达式需要放在我的Javascript中。我对Javascript还很陌生,所以我不知道该怎么做 有没有可能有人可以帮忙,但也解释一下这个正则表达式是如何工作的 干杯,如何使用PHP、MySQL和AJAX的组合让用户能够在数据库中输入保留字符?,php,javascript,mysql,regex,ajax,Php,Javascript,Mysql,Regex,Ajax,我已经建立了一个网站,允许用户向数据库添加位置。但是,我不熟悉正则表达式,因此我不确定如何允许撇号和美元符号等字符,而不影响数据库插入 我有一个表单,由AJAX读取,并用PHP/MySQL处理,因此有些电子语言有自己的“保留”字符,可用于各种用途。实际上,在AJAX发送字符串之前,正则表达式需要放在我的Javascript中。我对Javascript还很陌生,所以我不知道该怎么做 有没有可能有人可以帮忙,但也解释一下这个正则表达式是如何工作的 干杯, Dan您绝对不应该在Javascript中使
Dan您绝对不应该在Javascript中使用客户端,任何客户端都会被篡改,并打开一个巨大的安全漏洞,如果您问这个问题,您可能很熟悉这个漏洞
据我所知,字符串的内容不会影响Javascript或PHP,因为它是一个字符串。在插入数据库之前,需要对其进行转义,请查看该函数。基本上,在处理用户提交的数据时,您无法充分了解。Imo将正则表达式检查放在JavaScript区域是个坏主意,或者是不够的。您应该确保在任何地方(并且充分地)过滤此类数据 适用的常见筛选规则:
- 尽可能控制用户输入(预定义变量、自动建议等)
- 使用过滤掉任何不需要的输入,如html/script标记
- 例如,使用事先准备好的陈述或尝试熟悉
- 至少在插入到数据库之前使用
- 无需涉足正则表达式。在最后一个可能的步骤(这里是PHP)中进行验证,并在一个众所周知且经过测试的数据库库中使用准备好的语句。准备好的陈述会注意正确地引用你对他们提出的任何问题
一个很好的例子是简单地说,您希望为PHP/SQL部分使用准备好的语句。对于PDO:
try {
$dbh = new PDO($dsn,$user,$password);
$stmt = $dbh->prepare('INSERT INTO users SET username = :user');
$stmt->bindParam(':user',$_POST['user']);
$stmt->execute();
if ($stmt->rowCount == 1) {
//success
} else {
//fail
}
} catch (PDOException $e) { //Unhandled may expose $user/$password
echo 'Database connection failed: ' . $e->getMessage();
}
而$\u POST['user']
可以是test';删除表用户--代码>没有问题
不幸的是,我不太记得如何使用JS,但我建议不要使用AJAX调用设置数据(禁用JS、NoScript、浏览器更清晰等)谢谢大家的帮助。这就是我一直在寻找的解决方案。Cheers mateI使用mysql\u real\u escape字符串,它提供了我需要的解决方案。干杯,伙计。我会注意注入,虽然我故意避免恶意注入,因为在这种情况下,我是唯一有权访问此页面的人(使用其他安全方法将其锁定得非常紧密),并且该页面的唯一用户是我的客户端(如果他们破坏了它,他们会为此付费,哈哈)。无论如何,谢谢你的建议:)我知道SQL注入,这是唯一一个未受保护的数据条目,因为我认为它只会被我的客户机使用