我错过了什么? SQL 注入
What am I missing? SQL injection
我正在尝试尽可能地过滤掉以防止讨厌的 SQL 注入,这是我的代码示例,我是否遗漏了什么?
$name = htmlspecialchars($row['name']);
echo '<div class="col-sm-7">'.$name.'</div>';
在我的 html 代码中 ^
if( $_POST["name"] ) {
if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
die ("Invalid characters.");
}
$name = mysqli_real_escape_string($conn, trim($_POST['name']));
所以我的代码包括以上这些,是否有任何我遗漏的东西可以进一步阻止?
再问一个问题
既然这些数据不是来自我的表单,我是否必须过滤掉我自己的定义?例如
$currentdate = mysqli_real_escape_string($conn, trim(date("Y-m-d h:i:sa")));
我个人认为您适合 SQL 注射,但我会看看评论中的一些人在说什么。
另一方面,与 SQL 注入无关,您可能需要考虑在 $name
上使用 strip_tags
以及删除任何不需要的 HTML 字符。
我正在尝试尽可能地过滤掉以防止讨厌的 SQL 注入,这是我的代码示例,我是否遗漏了什么?
$name = htmlspecialchars($row['name']);
echo '<div class="col-sm-7">'.$name.'</div>';
在我的 html 代码中 ^
if( $_POST["name"] ) {
if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
die ("Invalid characters.");
}
$name = mysqli_real_escape_string($conn, trim($_POST['name']));
所以我的代码包括以上这些,是否有任何我遗漏的东西可以进一步阻止?
再问一个问题
既然这些数据不是来自我的表单,我是否必须过滤掉我自己的定义?例如
$currentdate = mysqli_real_escape_string($conn, trim(date("Y-m-d h:i:sa")));
我个人认为您适合 SQL 注射,但我会看看评论中的一些人在说什么。
另一方面,与 SQL 注入无关,您可能需要考虑在 $name
上使用 strip_tags
以及删除任何不需要的 HTML 字符。