我已經使用Bootstrap製作了一個html表單。我已經使用「必需」來確保數據填入要提交表單的某些字段中。這種形式轉到一個php腳本,它打開一個數據庫連接,根據提交的表單輸入值,指向一個感謝頁面並關閉連接。Bootstrap HTML + MySQL PHP Form安全性
它是我的第一手編碼形式,我關心的是安全性。我如何阻止黑客/垃圾郵件發送者?
你可以指出,拜託,我的代碼的問題,所以我可以在我把這個活的解決這些問題。請溫柔,我是一個擁有大約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的東西是一個很好的開始。的 – EnduroDave
可能重複[我怎樣才能防止在PHP中SQL注入?]他已經在使用的MySQLi(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – Gumbo