Php 在smarty中转义获取参数
我继承了PHP、MySQL和Smarty的代码库,并为web应用程序实现了一个菜单系统 我有这样一个URL:http://example.com/?url=some/page 在我的数据库中,我存储字符串'some/page',并将其映射到文件'some/path/dir/mypage.php',当访问URL时,该文件使用获取URL参数的php脚本中的include包含 代码包含使用GET参数发布数据的表单,如果我在http://example.com/?url=myform/add 我需要包含一个名为url的隐藏输入字段,其中值为myform/add,以便表单可以将结果发布回正确的页面 Smarty具有类似{$Smarty.get.url}的语法,用于获取url get参数并将其输出。这导致我的隐藏输入字段如下所示: 现在,我意识到我应该在将url参数打印为值之前清除它,但我不确定如何清除。使用{$smarty.get.url | escape:'url'}将/字符转义到%2F,结果是: 当我提交表单时,它将转换为%252F,并提供url: http://example.com/?url=some%252Fpage 由于/应该是一个有效的查询参数,我不明白为什么首先对它进行编码。在查询中使用/对我来说也很重要,它允许用户通过干净的url更好地理解url 因此,问题变成了,我应该如何处理smarty中的get参数以保持/不变,同时防止XSS攻击 我不担心PHP方面的事情,因为我在阅读了$\u GET['url']之后有很好的保护Php 在smarty中转义获取参数,php,smarty,xss,Php,Smarty,Xss,我继承了PHP、MySQL和Smarty的代码库,并为web应用程序实现了一个菜单系统 我有这样一个URL:http://example.com/?url=some/page 在我的数据库中,我存储字符串'some/page',并将其映射到文件'some/path/dir/mypage.php',当访问URL时,该文件使用获取URL参数的php脚本中的include包含 代码包含使用GET参数发布数据的表单,如果我在http://example.com/?url=myform/add 我需要包含
编辑:也许我根本不需要转义它,因为php脚本获取url参数,如果参数与数据库中存储的参数不匹配,则永远不会加载表单,因此永远不会在隐藏的输入字段中打印get参数。我仍然认为这个问题与其他用途有关。将escape参数留空,如下:{$smarty.get.url | escape}。这将应用htmlspecialchars,而不是RawrUncode转义:'url'。仅当要转义URI组件时,才使用{…| escape:'url'}。还可以为所有变量设置自动转义。只需添加此选项$smarty->escape\u html=true;。如果您设置了这个,并且希望避免对单个变量进行转义,那么您可以像{$noescape nofilter}这样做。哦,太好了。工作得很好。谢谢您: