保护来自各种攻击的PHP数据

时间:2016-11-23 18:02:44

标签: php security web


我是PHP安全新手,并尝试实现PDO以外的解决方案 我在这里看了几篇关于stackoverflow的文章,并搜索了许多文章 我试图编写自己的代码来保护用户输入 如果我在这里留下任何东西或者我在这里使用过任何不必要的东西,我会请求这里的专家来看看并指导我 我也缺少CSRF预防。除随机令牌生成之外还有其他什么吗?可以使用任何函数实现吗?

extract($_POST);
$stuid = filter_input(INPUT_GET, 'stud_id', FILTER_SANITIZE_SPECIAL_CHARS); //php filter extension
$stuid = trim($stuid);
$stuid = strip_tags($stuid);
$stuid = iconv('UTF-8', 'UTF-8//IGNORE', $stuid); //remove invalid characters.
$stuid = htmlspecialchars($stuid, ENT_COMPAT, 'UTF-8'); // manual escaping
$stuid = mysql_real_escape_string($stuid);
$stuid = htmlspecialchars($stuid, ENT_COMPAT, 'UTF-8'); //Cross site scripting (XSS)
$email = filter_input(INPUT_POST, $email, FILTER_SANITIZE_EMAIL);
$pass=md5($pass);

提前致谢。

1 个答案:

答案 0 :(得分:0)

在我的用户提交了要存储的数据库的数据的情况下,我需要确保我已经清理它并使用参数化查询:

/* Prepare an insert statement */
$query = "INSERT INTO myTable (DangerousData, MoreDangerousData) VALUES (?, ?)";
$stmt = $mysqli->prepare($query);

$stmt->bind_param($val1, $val2);

// white listing is always the MOST secure since we control the data
switch ($_POST['DangerousData']) {
  case 'Lamb': $val1 = 'Lamb'; break;
  case 'Sheep': $val1 = 'Sheep'; break;
  // so if they send something not allowed, we have a default
  default: $val1 = 'WolfinsheepsClothing';
}

// otherwise, the parametization of the statement will
// clean the data properly and prevent any SQL injection
$val2 = $_POST['MoreDangerousData'];

/* Execute the statement */
$stmt->execute();

出于电子邮件的目的,您需要在互联网上学习如何正确消毒来自用户的输入以达到您希望使用它的目的 - 大多数人使用正则表达式来验证安全性和有效性。电子邮件。

Stackoverflow can help you validate an email

Stackoverflow can help sanitize user input, too