gpt4 book ai didi

drupal - 是否需要清理/转义来自 drupal 的 arg(x) 的输出?

转载 作者:行者123 更新时间:2023-12-04 15:35:17 24 4
gpt4 key购买 nike

我正在安装 arg(x) 的 drupal 7

http://api.drupal.org/api/drupal/includes!bootstrap.inc/function/arg/7

已在 html 输出中大量使用,在 View 模板和其他地方等。虽然我已经查看了文档并搜索了这个主题,但我仍然对是否需要清理/转义 arg 的输出感到困惑(x) 使用 php 的 htmlspecialchars 或 drupal 的 check_plain 等来防止 xss。

最佳答案

从技术上讲,根据我的测试,您 确实需要逃避它。
但好的一面是,arg()并不总是使用直接的用户输入。

如果 URL(或更准确地说, $_GET['q'] )是 node/<h3>/edit , arg(1)返回 <h3>没有检查平原。
如果您想自己测试,请添加下面的代码段并查看自己。

<?php
echo (arg(1, 'node/<h3>/edit')); ?>Normal text

您现在将在 h3 中看到“普通文本”。

如果节点的 ID 为 4,在查看节点时, $_GET['q']将是节点/4。如果路径没有别名,URL 将是相同的。
按照上面的例子,如果用户打开 node/<h3> , arg(1)将是 <h3>无需转义,但有疑问用户会看到您使用的片段 arg()因为该页面返回 404 结果(您看不到任何块、页面内容等)。

使用 arg()t() , url() , l()和其他功能总是会逃避/清理结果,因此在实际世界中,您不太可能找到有人可以对您的网站进行 XSS 的真实案例。

这是我可以考虑的不良用途。
在 page.tpl.php 文件中,您可以从 URL 路径添加一个类,如下所示:
<body class="<?php print arg(0); ?>">

您可以预期在节点页面上,您会看到 body 标签的类是“node”,而在管理页面上,类是“admin”。但是想象一下用户打开一个这样的页面:
http://example.com/" onclick="alert('You are clicking on me');"

所以 body 标签的实际 HTML 应该是这样的:
<body class="" onclick="alert('You are clicking on me');">

现在您将看到 body 标签有一个空的 class 属性,并且 body 还添加了一个 onclick 事件。这可能是你能看到的最糟糕的例子——但我只是想向你展示一些真实的例子。
使用 $node->nid虽然是安全的。

关于drupal - 是否需要清理/转义来自 drupal 的 arg(x) 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13597369/

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