Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
安全地编码字符串并将其从html链接传递到PHP程序_Php_Javascript_Variables_Sanitize - Fatal编程技术网

安全地编码字符串并将其从html链接传递到PHP程序

安全地编码字符串并将其从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']) : ''

为了安全地进行编码和编码,需要采取哪些步骤 使用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);

我认为前两行应该可以。如果必须将其作为文本输出,您将使用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'";