本文目录一览:
- 1、一个简单富文本输入框控件的设计历程(一)
- 2、如何正确防御xss攻击?
- 3、什么是富文本?
- 4、用了富文本,怎么避免xss攻击
- 5、TP5框架 《防sql注入、防xss攻击》
- 6、phpwind9.x和8.7XSS注入以及管理后台脚本注入漏洞
一个简单富文本输入框控件的设计历程(一)
开发中,一提到富文本输入框,很多人会想到使用第三方的框架,比如 YYText。我也和大多数人一样,不想重复造轮子,但是我发现很多第三方的功能实在是太多太全了,而我只需要其中的一种而已,于是乎打算自己弄一个玩玩儿。先来看一下效果图。
如何设计呢?富文本其实最主要思想是,把富文本和普通文本一一对应起来。比如富文本是 “undefined”,那么它的普通文本就是“标题”。那么如何把这种关系对应起来呢?
方案一:
1、用一个数组存放富文本的信息(富文本 NSRange ,普通文本中的 NSRange,富文本内容);
2、当用户输入的时候,更新数组中 NSRange 的值;
3、控制光标位置不在富文本范围以内;
4、控制选择范围的起点和终点不在富文本范围以内;
5、调整富文本显示的颜色;
6、获取富文本;
7、获取普通文本。
如何你去实现,2、3、4、5 、6 这几个方法都需要枚举整个数组,而且在更新 NSRange 的时候也比较麻烦,这样的效率是比较低的,因此我实现到 2/3 的时候放弃了,另谋他路,结果还真的被我找到了,那就是方案二。
方案二总结就是三个“一”。一个类,一个属性,一个方法。
一个类: NSMutableAttributedString。
一个属性:该类的 attribute 属性。
attribute 除了支持系统已定义的外,还支持用户自定义的。因此它便可以替代我方案一中数组的作用,并维护富文本的位置信息。
一个方法:- (void)enumerateAttributesInRange:(NSRange)enumerationRange options:(NSAttributedStringEnumerationOptions)opts usingBlock:(void (NS_NOESCAPE ^)(NSDictionary*attrs, NSRange range, BOOL *stop))block NS_AVAILABLE(10_6, 4_0);
这个方法很特殊,主要是看我红框框中的内容,意思是,你可以在枚举的时候随意更改该 Range 内的内容,增、删、改都不会影响它的枚举位置。
方案二:
1、使用 NSMutableAttributedString 来记录富文本信息;
2、使用 NSMutableAttributedString 获取相关富文本信息;
(今天就写到这儿,各位是否已经知道如何做了,明天我再把具体的实现方法贴出来)
如何正确防御xss攻击?
1、基于特征的防御。XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同,这就是给XSS漏洞防御带来的困难,不可能以单一特征来概括所有XSS攻击。
传统的XSS防御在进行攻击鉴别时多采用特征匹配方式,主要是针对JavaScript这个关键词进行检索,但是这种鉴别不够灵活,凡是提交的信息中各有JavaScript时,就被硬性的判定为XSS攻击。
2、基于代码修改的防御。Web页面开发者在编写程序时往往会出现一些失误或漏洞,XSS攻击正是利用了失误和漏洞,因此一种比较理想的方法就是通过优化Web应用开发来减少漏洞,避免被攻击:
①用户向服务器上提交的信息要对URL和附带的HTTP头、POST数据等进行查询,对不是规定格式、长度的内容进行过滤。
②实现Session标记、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
③确认接收的内容被妥善的规范化,仅包含最小的、安全的Tag,去掉任何对远程内容的引用,使用HTTP only的cookie。
3、客户端分层防御策略。客户端跨站脚本攻击的分层防御策略是基于独立分配线程和分层防御策略的安全模型。它建立在客户端,这是它与其他模型最大的区别。之所以客户端安全性如此重要,客户端在接受服务器信息,选择性的执行相关内容。这样就可以使防御XSS攻击变得容易,该模型主要由三大部分组成:
①对每一个网页分配独立线程且分析资源消耗的网页线程分析模块;
②包含分层防御策略四个规则的用户输入分析模块;
③保存互联网上有关XSS恶意网站信息的XSS信息数据库。
什么是富文本?
富文本格式(Rich Text Format, 一般简称为RTF)是由微软公司开发的跨平台文档格式。大多数的文字处理软件都能读取和保存RTF文档。RTF是Rich TextFormat的缩写,意即多文本格式。
富文本作为一种类似DOC格式(Word文档)的文件,有很好的兼容性,使用Windows“附件”中的“写字板”就能打开并进行编辑。
富文本作为一种非常流行的文件结构,很多文字编辑器都支持它。一般的格式设置,比如字体和段落设置,页面设置等等信息都可以存在RTF格式中,它能在一定程度上实现word与wps文件之间的互访。
扩展资料:
富文本格式(RTF)规范为了便于在应用程序之间轻松转储格式化文本和图形的一种编码方法。现在,用户可以利用特定转换软件。
在不同系统如MS-DOS、Windows、OS/2、Macintosh和Power Macintosh的应用程序之间转移字处理文档。RTF规范提供一种在不同的输出设备、操作环境和操作系统之间交换文本和图形的一种格式。
富文本使用ANSI, PC-8, Macintosh, 或IBM PC字符集控制文档的表示法和格式化,包括屏幕显示和打印。
参考资料来源:百度百科-富文本格式
用了富文本,怎么避免xss攻击
后台过滤就可以了。例如script ,input 标签直接replace掉 ,onclick. onxxx 之类也replace掉。只允许图文的html标记和样式存在。
TP5框架 《防sql注入、防xss攻击》
TP框架中有自带的防止xss(跨站脚步攻击)、sql注入,在 application/config.php 中有个配置选项:
框架默认没有设置任何过滤规则,你可以是配置文件中设置全局的过滤规则:
// 默认全局过滤方法 用逗号分隔多个
'default_filter' = 'htmlspecialchars,addslashes,strip_tags',
把这些参数加上后,每次请求后端的接口中,框架就会对请求的变量进行自动过滤了。
也可以在获取变量的时候添加过滤方法,例如:
Request::instance()-get('name','','htmlspecialchars'); // 获取get变量 并用htmlspecialchars函数过滤
Request::instance()-param('username','','strip_tags'); // 获取param变量 并用strip_tags函数过滤
Request::instance()-post('name','','org\Filter::safeHtml'); // 获取post变量 并用org\Filter类的safeHtml方法过滤
可以支持传入多个过滤规则,例如:
Request::instance()-param('username','','strip_tags,strtolower'); // 获取param变量 并依次调用strip_tags、strtolower函数过滤
如果当前不需要进行任何过滤的话,可以使用(V5.0.3+版本) ps: 这个方法测试了下,好像没有起作用,你们也可以试下
Request::instance()-get('name','',false); // 获取get变量 并且不进行任何过滤 即使设置了全局过滤
如果有用到富文本编辑器或其他类似的提交html标签的变量,可以使用:
phpwind9.x和8.7XSS注入以及管理后台脚本注入漏洞
漏洞描述:
phpwind近期公布了2处安全漏洞,分别是富文本编辑器发帖的xss注入(受影响版本8.7、9.X)以及管理后台添加新用户时的脚本注入(受影响版本8.7)。
影响版本:
phpwind 9.x以及8.7,8.7.1
漏洞等级:
高危
修复建议:
1、安装官方最新补丁,官方补丁:
2、添加网站至云观测,及时了解网站组件突发/0day漏洞。