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

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

先看一个测试:
请求:
http://localhost:8080/testapi/testapi?apiPath=http%3A%2F%2Fhbjltv.com%2Finfo%2Frequest%3Fusername%3Dhuang%26password%3Dadmin
解码之后就是:
http://localhost:8080/testapi/testapi?apiPath=http://hbjltv.com/info/request?username=huang&password=admin

该接口用于测试协作方接口的应答状态码.
为了防止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<String, Object> map = new HashMap<String, Object>();
        map.put("responseCode", responseStatusCode);

        map.put("apiPath", apiPath);
        return HWJacksonUtils.getJsonP(map);
    }

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

apiPath = HtmlUtils.htmlEscape(apiPath);

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

修改HTML escape 的函数如下:

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<p>layui是一款采用自身模块规范编写的前端UI框架,遵循原生HTML/CSS/JS的书写与组织形式,门槛极低,拿来即用。其外在极简,却又不失饱满的内在,体积轻盈,组件丰盈,从核心代码到API的每一处细节都经过精心雕琢,非常适合界面的快速开发。layui首个版本发布于2016年金秋,她区别于那些基于MVVM底层的UI框架,却并非逆道而行,而是信奉返璞归真之道。准确地说,她更多是为服务端程序员量身定做,你无需涉足各种前端工具的复杂配置,只需面对浏览器本身,让一切你所需要的元素与交互,从这里信手拈来。</p><p> </p><p>layui前端框架更新日志:</p><p>v2.6.8</p><p>[重写] sort 方法,以便对数字、非数字及混合类等所有内容的排序进行支持</p><p>[新增] dropdown 组件的 align 参数,用于控制下拉菜单水平对齐方式(支持 left、center、right),默认 left</p><p>[新增] table 组件的 escape 参数,用于是否开启 xss 字符过滤(默认 false)</p><p>[加强] table 组件的自定义模板功能,返回 LAY_COL 字段,可得到当前列的表头配置信息</p><p>[加强] form 组件对验证不通过的表单项自动定位到可视区域,不再是只对输入框自动获焦定位 </p><p>[加强] form 组件对 url 的验证</p><p>[修复] form 相关 css 的 layui-checkbox-disabled 书写错误(之前为 disbaled) </p><p>[修复] form 组件的 select option 内容出现换行时的样式异常问题</p><p>[修复] colorpicker 颜色选择组件在 Firefox 下选择颜色时的若干兼容问题</p><p>[加强] colorpicker 组件的坐标定位计算方式</p><p>[修复] 低版本 ie 若干报错问题</p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值