php - 如何使用 PHP 4 防止 $_POST 电子邮件字段的 SQL 注入(inject)

标签 php mysql sql-injection php4

如果我能够使用 PHP 5,这会更容易一些,不幸的是这不是一个可行的选择?

我已经在使用 this stackoverflow thread 中的 RFC 2822验证电子邮件格式是否有效,当然这在表单页面上使用 JS,这不是最佳实践。

在保存之前我会再次验证它是否符合这种格式,但我想知道是否有任何方法可以用来帮助防止 SQL 注入(inject)?

最佳答案

错误的方式 - “永远不要相信用户输入”!

首先确定数据是你想要的格式,然后查询数据库。 首先,检查 $_POST[email_address] 是否采用有效的电子邮件格式,例如用正则表达式。仅当它是有效的电子邮件格式时,您才查询数据库。

电子邮件正则表达式代码 (PHP):

<?php
$email = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f682938582b682938582d895999b" rel="noreferrer noopener nofollow">[email protected]</a>";

if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
  echo "Email is valid.";
}
else {

  echo "Email in invalid.";
}
?>

关于php - 如何使用 PHP 4 防止 $_POST 电子邮件字段的 SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9280260/

相关文章:

mysql - 如何将 $(特殊字符)插入数据库

azure - Azure 函数中针对 Cosmos DB 的 SQL 注入(inject)

php - 获取 Xml 版本

php - 为什么 PHP 不抛出解析错误?

php - 我想插入和更新特定项目 ID 的数量

primefaces - IBM AppScan - SQL 盲注(基于时间)- JSF 2.2 和 Primefaces - JBOSS 7.2 EAP

mysql - 使用 WordPress get_results() 数据库函数是否可以防止 sql 注入(inject)

php - PHP 对象序列化有多安全,跨页面传递是否安全? (使用 phpXMLrpc)

php - Doctrine 2.0 准备好使用了吗?

mysql - 如果我想搜索以 DE-SB 和 DE-TB 开头的 SKU,如何在 SQL 中使用 LIKE 通配符? [] 在这里如何工作?