安全地编码字符串并将其从html链接传递到PHP程序
为了安全地进行编码和编码,需要采取哪些步骤 使用javascript从html href传递字符串以构造指向php程序的链接 在javascript中设置URL安全地编码字符串并将其从html链接传递到PHP程序,php,javascript,variables,sanitize,Php,Javascript,Variables,Sanitize,为了安全地进行编码和编码,需要采取哪些步骤 使用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']) : ''
// 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);
我认为前两行应该可以。如果必须将其作为文本输出,您将使用htmlentities。查看您的代码,您真正需要的是:
$myvar = !empty($_GET['myvar']) ? $_GET['myvar'] : '';
除此之外,PHP还会自动对URL进行解码。我个人更喜欢在输出数据时执行htmlentities或htmlspecialchars,即:
<?php echo htmlentities($mydata); ?>
这将阻止SQL注入。除非您正在格式化用户输入或执行验证,否则绝对不需要执行任何其他类型的清理
希望这有帮助 这个字符串将在哪里使用…?您想要实现什么?如果希望将GET变量用作文件路径或SQL查询变量,则将使用不同的函数。
$data = mysql_real_escape_string($mydata);
$query = "SELECT * FROM table WHERE stuff = '$mydata'";