python 过滤 unicode 控制字符
昨天晚上平台被个别用户利用了一个漏洞:
在浏览器上执行测试代码:
- 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'), '')
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: