2011-07-21 46 views
0

從填充HTML選擇框的安全角度來看,哪種更好?當填充下拉框時,php或javascript更安全

選項A:PHP

<?php echo "<select name=\"empName\" id=\"empName\" class=\"text\" style=\"width:10em;\">\r\n";?> 
<?php include 'PHPscripts/getEmployeeNamesDB.php'?> 
<?php echo "</select>\r\n";?> 

getEmployeeNamesDB.php

$dropdown = "";  
$tbl_name="employee"; // Table name 
$result = mysql_query("SELECT CONCAT_WS(' ', firstname, lastname) AS 'wholename', empid FROM  $tbl_name ORDER BY lastname") or die("cannot select result DB.php");  
while($row = mysql_fetch_assoc($result)) {   
    $empid = $row["empid"];   
    $name = $row["wholename"];   
    $dropdown .= "<option value=\"$empid\">$name</option>\r\n"; 
} 
echo $dropdown; 

選項B:使用Javascript

除了使用AJAX調用來填充一個javascript

相同的信息變量。然後使用JavaScript來做出選擇聲明?

安全是我最關心的問題,但我也想知道你是否可以提出我應該考慮的其他問題。

+0

我不確定我看到這裏如何提出任何安全問題。你能解釋一下你擔心的情況嗎? –

+0

這兩個解決方案會遇到什麼安全問題? – Ghostoy

+0

我不能僅僅檢查任何特定的安全問題。有什麼其他的理由我應該使用一個在另一個? – user052211

回答

0

我在這裏看到的唯一安全性是如果你走AJAX路線,你還有一層需要處理。用PHP它純粹是你的服務器腳本之間的通信。藉助AJAX,您可以通過網絡從最終用戶瀏覽器獲得通信,這可以是任何事情。該用戶可以使用你的JS,如果他們想要並補充查詢取決於你的JS如何建立該查詢。

+0

感謝您的幫助好點阿里爾 – user052211

0

在安全點上它們是相同的。使用ajax可能更容易進行設計。

0

安全性沒有區別,但選項a會更快,更簡單。它將適用於JavaScript關閉的人。

2

當您嘗試填充或生成輸出時,除非涉及以前的用戶輸入,否則沒有安全問題。如果用戶選擇這樣做,用戶可以僞造一個POST請求,並輕鬆地包含未包含在選擇框中的選項。

因此,它在用戶提交數據時應該關注安全性。您應該在收到數據後始終驗證數據,以確定它是否是有效的選項。例如:

<?php 
// Generating the menu 
$choices = array('Eggs','Toast','Coffee'); 
echo "<select name='food'>"; 

foreach ($choices as $choice) { 
    echo "<option>$choice</option>"; 
} 

echo "</select>"; 

// Then, later, validate when user submits form 
if (! in_array($_POST['food'], $choices)) { 
    echo "You must select a valid choice."; 
} 
?> 

也正如其他人所指出的,你應該使用PHP,而不是JS,因爲它可以更快,也努力爲那些誰擁有JS關閉。

+0

也好點。我驗證了客戶端(javascript)和服務器端(PHP) – user052211