Bootstrap HTML + MySQL PHP表单安全性

时间:2014-02-08 10:30:34

标签: php mysql security validation

我使用Bootstrap创建了一个html表单。我使用“必需”来确保在要提交的表单的某些字段中填充数据。此表单转到php脚本,该脚本打开数据库连接,根据提交的表单输入值,指向感谢页面并关闭连接。

这是我的第一手编码形式,我关注的是安全性。如何阻止黑客/垃圾邮件发送者?

请问,请问我的代码问题,以便在我发布之前我可以解决这些问题。请保持温和,我是一名拥有约3个月编码经验的新手。

请注意原始表格实际上有9个字段,但我省略了它,假设这些细节不适用于此讨论。

HTML代码

<form class="form-horizontal" method="post" action="vacancy.php">
  <div class="form-group">
    <label for="company" class="col-sm-3 control-label">Company Name *</label>
      <div class="col-sm-6">
        <input type="text" name="company" class="form-control" placeholder="Enter Company Name" required />
      </div>
  </div>    
  <div class="form-group">
    <label for="contactperson" class="col-sm-3 control-label">Contact Person *</label>
      <div class="col-sm-6">
        <input type="text" name="contactperson" class="form-control" placeholder="Enter Full Name" required />
      </div>
  </div>
  <div class="form-group">
    <label for="designation" class="col-sm-3 control-label">Designation *</label>
      <div class="col-sm-6">
        <input type="text" name="designation" class="form-control" placeholder="Enter Designation" required />
      </div>
  </div>  
  <div class="form-group">
    <div class="col-sm-offset-3 col-sm-6">
      <button type="submit" class="btn btn-primary">Submit</button>
      <button type="reset" class="btn btn-default">Clear</button>
    </div>
  </div>
</form>

PHP代码

<?php
  $con=mysqli_connect("localhost","db2u","password","db2");
    if (mysqli_connect_errno())
     {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
     }
  $sql="INSERT INTO vacancy (Company, ContactPerson, Designation)
  VALUES
  ('$_POST[company]','$_POST[contactperson]','$_POST[designation]')";
    if (!mysqli_query($con,$sql))
     {
      die('Error: ' . mysqli_error($con));
     }
    header("Location: thankyou.html");
  mysqli_close($con);
?>

编辑:所以我似乎需要验证。我在看jqBootstrapValidation。甚至考虑htmlspecialchars(这更容易)。我相信两者都能做得同样出色吗? PDO目前对我来说太过分了。

3 个答案:

答案 0 :(得分:0)

SQL注入可能会破坏您的代码http://en.wikipedia.org/wiki/SQL_injection

尝试使用htmlspecialchars或更好地使用PDO代替OLD和DANGEROUS mysql_ *函数。

答案 1 :(得分:0)

永远不要相信用户输入。你应该使用mysqli_real_escape_string()函数来转义字符串。 http://www.php.net/manual/en/mysqli.real-escape-string.php

$company = mysqli_real_escape_string($_POST[company]);

$contactperson = mysqli_real_escape_string($_POST[contactperson]);

$designation = mysqli_real_escape_string($_POST[designation]);

$sql="INSERT INTO vacancy (Company, ContactPerson, Designation) VALUES ('$company','$contactperson','$designation')";

答案 2 :(得分:0)

您尚未验证php代码中的任何字段, 你应该把验证放在php文件中,任何用户都可以从输入中删除“required”并发布数据。