填充下拉框时,php或javascript更安全

时间:2011-07-21 04:59:40

标签: php javascript security

从填充HTML选择框的安全角度来看哪个更好?

选项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制作select语句?

安全是我的主要关注点,但我也想知道你是否可以提出我应该考虑的任何其他问题。

4 个答案:

答案 0 :(得分: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的人。

答案 1 :(得分:0)

在安全方面,它们是相同的。使用ajax可能更容易设计。

答案 2 :(得分:0)

我在这里看到的唯一安全因素是,如果你使用AJAX路由,你还需要再处理一层。使用PHP,它纯粹是服务器脚本之间的通信。使用AJAX,您可以通过网络从最终用户浏览器进行通信,这可以是任何内容。根据JS构建查询的方式,该用户可以根据需要使用您的JS并补充查询。

答案 3 :(得分:0)

安全性没有区别,但选项a会更快,更简单。它适用于关闭javascript的人。