我有这个PHP函数,用于将所有html特殊字符转换为html实体,兼容UTF-8。
function safe($input) {
$text = trim($input); //<-- LINE 31
$text = preg_replace("/(\r\n|\n|\r)/", "\n", $text); // cross-platform newlines
$text = preg_replace("/\n\n\n\n+/", "\n", $text); // take care of duplicates
$text = htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
$text = stripslashes($text);
$text = str_replace ( "\n", " ", $text );
$text = str_replace ( "\t", " ", $text );
return $text;
}
现在,我使用acunetix web vuln scanner检查我的脚本,我看到了这个错误:
This page contains an error/warning message that may disclose sensitive information.The message can also contain the location of the file that produced the unhandled exception.
This may be a false positive if the error message is found in documentation pages.
This vulnerability affects /cms/submit.php.
Discovered by: Scripting (Error_Message.script).
Attack details
URL encoded POST input access was set to 2
Error message found:
<b>Warning</b>: trim() expects parameter 1 to be string, array given in <b>C:\xampp\htdocs\cms\includes\safefunc.php</b> on line <b>31</b><br />
我该如何解决这个问题?
答案 0 :(得分:2)
正如其他人所说,错误是自我解释的,并且此函数不是为处理数组而构建的。如果你需要处理数组,那么像这样:
function safe($input) {
if(is_array($input)) {
return array_map('safe', $input);
}
// rest of code
}
答案 1 :(得分:0)
阅读警告,你的答案就在那里。
Trim必须接收一个字符串作为参数,而不是数组。 使用
var_dump($input)
检查您的输入变量类型。
你能展示调用函数 safe()的代码吗?
答案 2 :(得分:0)
尝试使用来对$ input进行字符串化
<section>
<div class="grid">
<div onclick="setText();"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
<div onclick="this.innerHTML=prompt('Enter a number')"></div>
</div>
<section>
对我有用