清理 $_GET 参数以避免 XSS 和其他攻击

新手上路,请多包涵

我有一个 php 网站,它包含()将内容嵌入到模板中。要加载的页面在 get 参数中给出,我将“.php”添加到参数的末尾并包含该页面。我需要做一些安全检查以避免 XSS 或其他东西(不是 mysql 注入,因为我们没有数据库)。我想出的是以下内容。

 $page = $_GET['page'];

if(!strpos(strtolower($page), 'http') || !strpos($page, '/') ||
    !strpos($page, '\\') || !strpos($page, '..')) {
        //append ".php" to $page and include the page

我还能做些什么来进一步清理我的输入吗?

原文由 Federico klez Culloca 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 354
2 个回答
$page = preg_replace('/[^-a-zA-Z0-9_]/', '', $_GET['page']);

这可能是清理它的最快方法,这将采取任何措施并确保它只包含字母、数字、下划线或破折号。

原文由 Mez 发布,翻译遵循 CC BY-SA 2.5 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏