博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
防xss攻击,需要对请求参数进行escape吗?
阅读量:6331 次
发布时间:2019-06-22

本文共 1232 字,大约阅读时间需要 4 分钟。

防xss攻击,需要对请求参数进行escape吗?

先看一个测试:

请求:
解码之后就是:

该接口用于测试协作方接口的应答状态码.

为了防止xss攻击,所以对所有参数都进行html escape:

@RequestMapping("/testapi")    @ResponseBody    public String test(String apiPath, String requestMethod) throws IOException {        apiPath = HtmlUtils.htmlEscape(apiPath);        URL url = new URL(apiPath);        URLConnection urlConnection = url.openConnection();        HttpURLConnection httpUrlConnection = (HttpURLConnection) urlConnection;        httpUrlConnection.setDoInput(true);        httpUrlConnection.setUseCaches(false);        if (!ValueWidget.isNullOrEmpty(requestMethod)) {            httpUrlConnection.setRequestMethod(requestMethod);        }        httpUrlConnection.connect();        int responseStatusCode = httpUrlConnection.getResponseCode();        httpUrlConnection.disconnect();        System.out.println("responseStatusCode:" + responseStatusCode);        Map
map = new HashMap
(); map.put("responseCode", responseStatusCode); map.put("apiPath", apiPath); return HWJacksonUtils.getJsonP(map); }

看看协作方接口收到的参数:

协作方后台日志
我传递的参数名称明明是password,但是现在怎么变成了amp;password ?
因为:

apiPath = HtmlUtils.htmlEscape(apiPath);

所以对参数进行HTML escape时应该不处理&

修改HTML escape 的函数如下:

你可能感兴趣的文章
微服务通信策略
查看>>
NLP领域最优秀的8个预训练模型(附开源地址)
查看>>
AVG插件泄漏Chrome用户数据
查看>>
红帽发布 Ansible Tower 3.4:在混合云中实践DevOps更便捷
查看>>
了解这12个概念,让你的JavaScript水平更上一层楼
查看>>
VS2017 15.4提供预览版,面向Windows 10秋季更新(FCU)
查看>>
QCon上海2015精彩演讲前瞻:一线互联网公司架构实践
查看>>
中台之上(一):重视业务架构,不要让“业务的归业务、技术的归技术”
查看>>
混沌实践访谈:混沌工程和系统可观测性密不可分
查看>>
MIT开发新加密货币,用户所需数据比比特币减少99%
查看>>
使用ConstructR启动akka集群
查看>>
Apache Kylin在绿城客户画像系统中的实践
查看>>
冗余代码检测与分析
查看>>
树莓派第三代跨越发展,采用64位处理器内建WiFi及蓝牙
查看>>
技术实践如何支持演进式架构和持续集成
查看>>
在敏捷中应用测试驱动开发
查看>>
阿里云9月1日安骑士升级故障真相
查看>>
Effective C++ 4.设计与声明
查看>>
IBM推出实时跨境支付解决方案Blockchain World Wire
查看>>
Reinhold就Jigsaw投票一事向JCP提交公开信
查看>>