python过滤unicode控制字符

昨天晚上平台被个别用户利用了一个漏洞:

原理:https://www.zhihu.com/question/43621727

http://blog.sina.com.cn/s/blog_593d2b950100hwl1.html    

在浏览器上执行测试代码:

data:text/html;charset=utf8,<script>document.write('陈佳慧'+String.fromCharCode(8238)+'送了一座海岛'.split('').reverse().join('')+String.fromCharCode(8237))</script>
复制生成的文字,取app上修改昵称。

效果:


虽然说没有影响到业务数据,但是这样的漏洞如上面介绍的那样还是有一些风险的,对于其他用户也有困扰。

写了一个过滤函数。

def nick_name_filter(nick_name):
    return nick_name.replace(unichr(8206).encode('utf-8'), '') \
        .replace(unichr(8207).encode('utf-8'), '') \
        .replace(unichr(8205).encode('utf-8'), '') \
        .replace(unichr(8204).encode('utf-8'), '') \
        .replace(unichr(8234).encode('utf-8'), '') \
        .replace(unichr(8237).encode('utf-8'), '') \
        .replace(unichr(8238).encode('utf-8'), '') \
        .replace(unichr(8236).encode('utf-8'), '') \
        .replace(unichr(8302).encode('utf-8'), '') \
        .replace(unichr(8303).encode('utf-8'), '') \
        .replace(unichr(8299).encode('utf-8'), '') \
        .replace(unichr(8298).encode('utf-8'), '') \
        .replace(unichr(8301).encode('utf-8'), '') \
        .replace(unichr(8300).encode('utf-8'), '') \
        .replace(unichr(30).encode('utf-8'), '') \
        .replace(unichr(31).encode('utf-8'), '') 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值