0

需要哪些步骤来安全地编码并使用 javascript 从 html href 传递字符串以构建到 php 程序的链接。

在 javascript 中设置 URL

// encodes a URI component.
path = "mypgm.php?from=" + encodeURIComponent(myvar) ;

在 php 中:

// get passed variables
$myvar = isset($_GET['myvar']) ? ($_GET['myvar']) : ''; 

// decode - (make the string  readable)
$myvar = (rawurldecode($myvar));

// converts characters to HTML entities (reduce risk of attack)
$myvar = htmlentities($myvar);

// maybe custom sanitize program as well?
// see [http://stackoverflow.com/questions/2668854/php-sanitizing-strings-to-make-them-url-and-filename-safe][1]
$myvar = sanitize($myvar);
4

2 回答 2

0

我认为前两行应该没问题。如果您必须将其输出为文本,您将使用 htmlentities。

于 2010-04-20T02:37:23.590 回答
0

查看您的代码,您真正需要的是:

$myvar = !empty($_GET['myvar']) ? $_GET['myvar'] : '';

除此之外,PHP 会自动进行 URL 解码。我个人更喜欢做我的htmlentities()htmlspecialchars()当我去输出数据时,即:

<?php echo htmlentities($mydata); ?>

您特别需要转义或清理数据的唯一其他时间是您正在构建 SQL 查询:

$data = mysql_real_escape_string($mydata);
$query = "SELECT * FROM table WHERE stuff = '$mydata'";

这将防止 SQL 注入。除非您正在格式化用户输入或执行验证,否则绝对没有必要进行任何其他类型的清理。

希望这可以帮助!

于 2010-04-20T17:42:16.533 回答