【发布时间】:2014-03-05 21:01:36
【问题描述】:
我使用 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 对我来说有点太多了。
【问题讨论】:
-
我没有仔细查看您的代码,但没有输入验证。基本上,目前您允许任何人输入任何内容,包括会破坏您的数据库的内容等。这是一个很大的话题,但您可以通过使用诸如 codeigniter 之类的框架轻松开始,它为您做了很多这些事情,或者买一本书带有一些模板代码。 O'Reilly 称为 html php 和 mysql 之类的东西是一个不错的起点。
标签: php mysql security validation