首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >传递将结果集从一个页面筛选到另一个页面并以安全方式返回的条件

传递将结果集从一个页面筛选到另一个页面并以安全方式返回的条件
EN

Stack Overflow用户
提问于 2017-01-17 07:02:40
回答 1查看 70关注 0票数 0

在php页面上,我显示用户对数据库的查询结果。另外,我给用户提供了在3个不同的参数上过滤这些结果的可能性,这样只能从数据库中显示出适当的部分。我想知道我的方法是否足够安全,是否有更容易或更安全的方法实现同样的结果。

更深入:我使用过滤器providerclientphone.

一个提供者可以有多个客户,一个客户可以有多个电话。用户通过<form method='GET'>填充筛选器,从而生成如下查询字符串:

代码语言:javascript
运行
AI代码解释
复制
?displayFilters[]=provider|1&displayFilters[]=client|&displayFilters[]=phone|3

在上述情况下,用户决定只显示provider '1‘和phone类型'3’的结果。没有为client设置过滤器,因此在|没有设置之后。在我的页面中,我分析这个查询字符串,将过滤器值放入适当的数组中,如下所示:

代码语言:javascript
运行
AI代码解释
复制
if (isset($_GET['displayFilters'])) {
$displayFiltersTmp = $_GET['displayFilters'];
foreach ($displayFiltersTmp as $value) {
    $displayFilters[substr($value, 0, strpos($value, "|"))] = substr($value, strpos($value, "|")+1);
}
foreach ($displayFilters as $key => $value) {
    if ($displayFiltersURL == "")
        $displayFiltersURL .= "displayFilters".urlencode("[]") . "=" . $key . urlencode("|") . $value;
    else
        $displayFiltersURL .= "&displayFilters".urlencode("[]") . "=" . $key . urlencode("|") . $value;
}
}

通过这种方式,我可以更容易地操作MySQL查询,以便按要求过滤结果。

我还重新生成原始查询字符串,以供其他用途。之所以这样做,是因为此页面显示的结果可以在单独的页面中编辑。通过我的解决方案,我可以将这些过滤器作为一个(一对)GET参数传递给显示结果的原始页面。因此,编辑后,用户将返回到显示页面,并且仍然应用他们的过滤器。

我现在想知道这种方法是否“安全”(我在将过滤器应用于MySQL-query之前做了必要的检查),但是否有更简单和/或更优雅的解决方案来解决这个问题。

我现在所做的是可行的,但我担心的是安全和可能是稳定的。

感谢任何愿意调查此事的人!肯尼斯·盖茨

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-18 07:02:47

关于安全性,我唯一要更改的是urlencode() $key$value变量,而不是[]|-characters。$key$value参数是用户输入,这一直是任何代码的缺点。

注意:如果要在HTML中为访问者显示这些值,那么应该使用http://php.net/manual/en/function.htmlspecialchars.php。但是,由于您只打算再次构建url,那么urlencode()就足够了。

否则,您的代码应该足够安全,只要您在查询数据库时使用准备好的语句(特别是在查询中使用用户输入时)。

正如我们在评论中所讨论的,有其他的方法来做你正在做的事情,但这并不是对实际问题的真正答案,所以让我们把它留在注释中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41700435

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文