在我的网络应用程序中,我试图阻止用户在运行搜索时在 freeText 参数中插入 JavaScript。
为此,我在 Velocity 头文件中编写了代码来检查查询字符串是否包含名为 freeText 的参数,如果是,则使用 replace 方法替换参数值中的字符。但是,当您加载页面时,它仍然显示原始查询字符串 - 我不确定如何用具有替换字符的新查询字符串替换原始查询字符串。
这是我的代码:
#set($freeTextParameter = "$request.getParameter('freeText')")
freeTextParameter: $freeTextParameter
#if($freeTextParameter)
##Do the replacement:
#set($replacedQueryString = "$freeTextParameter.replace('confirm','replaced')")
replacedQueryString after doing the replace: $replacedQueryString
The query string now: $request.getQueryString()
The freeText parameter now: $request.getParameter('freeText')
#end
在上面的代码中,replacedQueryString 变量已经按预期发生了变化(即替换已经按预期进行),但是 $request.getQueryString() 和 $request.getParameter('freeText') 仍然和之前一样,如如果更换从未发生过。
看到有一个 request.getParameter 方法可以很好地获取参数,我假设会有一个 request.setParameter 方法反过来做同样的事情,但没有。