是PHP还是javascript在填充下拉框时更安全?


is php or javascript more secure when populating dropdown boxes

从安全性的角度来看,填充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使选择语句?

安全是我最关心的问题,但我也想知道你是否能提出其他我应该考虑的问题。

在尝试填充或生成输出时不存在安全问题,除非涉及到以前的用户输入。如果用户愿意,他可以伪造一个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的人。

我在这里看到的唯一安全问题是,如果您采用AJAX路线,则需要处理多一层。对于PHP,它纯粹是服务器脚本之间的通信。使用AJAX,您可以通过网络与终端用户浏览器进行通信,这可以是任何内容。如果用户愿意,他们可以使用你的JS,并根据你的JS如何构建该查询来补充查询。

在安全方面他们是一样的。使用ajax可以更容易地设计。

安全性没有区别,但选项a将更快,更简单。它将工作的人谁有javascript关闭。