web开发中如何保存textarea中的格式 又能防御XSS攻击
2017-03-21 23:31
246 查看
最近在开发一个web项目中的内部邮箱系统时被一个问题卡住了,我希望能通过邮箱向用户推送各类信息并且用户能原样式浏览。但是又希望对输入进行过滤防止恶意的XSS攻击。
一般而言,我们都会在服务器端使用htmlspecialchars(nl2br($str))对内容进行过滤防止XSS攻击,但是使用了这个方式,用户就没法原样式浏览信息。
如果不进行过滤,第一存在极大的安全风险,第二一些换行引号等特殊字符会导致json数据传输出错。
解决方案:
第一步:在js文件中使用如下代码
var str= jQuery("#emailcontent").val();//获取指定id的textarea值
var strs= new Array(); //定义一数组
var content = "";
strs=str.split("\n"); //字符分割
for (var i=0;i<strs.length ;i++ )
{
content += "<p style='text-indent: 2em;'>"+strs[i]+"</p>"; //分割后的字符输出, style='text-indent: 2em;首行缩进
}
上面的js代码的含义是,将用户输入的数据取出来,并且对换行进行分割,对每一行使用<p></p>包裹起来,如果使用POST传输的话还需要进行如下操作
jQuery("#emailcontent").val(content);//将处理过的数据放到textarea中
第二步:服务器端处理 php
$body = strip_tags($_POST["emailcontent"],"<p></p>");//去除掉数据中的全部html标签,仅保留<p></p>标签
$body = str_replace("\"",""",$body);//将全部的双引号转换成编码
通过这两步处理就能将原格式数据传输给用户
一般而言,我们都会在服务器端使用htmlspecialchars(nl2br($str))对内容进行过滤防止XSS攻击,但是使用了这个方式,用户就没法原样式浏览信息。
如果不进行过滤,第一存在极大的安全风险,第二一些换行引号等特殊字符会导致json数据传输出错。
解决方案:
第一步:在js文件中使用如下代码
var str= jQuery("#emailcontent").val();//获取指定id的textarea值
var strs= new Array(); //定义一数组
var content = "";
strs=str.split("\n"); //字符分割
for (var i=0;i<strs.length ;i++ )
{
content += "<p style='text-indent: 2em;'>"+strs[i]+"</p>"; //分割后的字符输出, style='text-indent: 2em;首行缩进
}
上面的js代码的含义是,将用户输入的数据取出来,并且对换行进行分割,对每一行使用<p></p>包裹起来,如果使用POST传输的话还需要进行如下操作
jQuery("#emailcontent").val(content);//将处理过的数据放到textarea中
第二步:服务器端处理 php
$body = strip_tags($_POST["emailcontent"],"<p></p>");//去除掉数据中的全部html标签,仅保留<p></p>标签
$body = str_replace("\"",""",$body);//将全部的双引号转换成编码
通过这两步处理就能将原格式数据传输给用户
相关文章推荐
- [Web开发] IE8中如何防御网站被Clickjacking攻击
- Golang web 开发实战之 session 缓存:如何使用 redigo 将一个结构体数据保存到 redis?
- [Web开发] IE8中如何防御网站被Clickjacking攻击
- Skyline软件二次开发初级——11如何在WEB页面中的三维地图上加载和保存工程文件
- [web]xss攻击及如何防御
- Golang web 开发实战之 session 缓存:如何使用 redigo 将一个结构体数据保存到 redis?
- 如何使用web_reg_save_param方法保存的多个参数?
- 如何在Web页面退出前提示用户保存数据?
- [ASP开发]如何提高WEB程序的效率
- web中,如何读取Word内容(包含表格,但不包含图片)并且显示在页面中或保存进数据库中
- 如何使用web_reg_save_param方法保存的多个参数?
- [转别人的文章(忘记出处了)]如何防止别人保存我们开发的网页
- 如何选择Web开发框架
- 团队开发中,如何处理一个站点不同Web应用通用Session
- 如何开发基于HTML格式的电子邮件系统?
- 开发ASP.NET 2.0 Web应用程序时如何将App_Code文件夹中的共享代码配置生成多个Dll
- 如何在Web页面退出前提示用户保存数据?
- QuickReport 3.0的导出文件 *.qrp 如何用代码的方式保存成图片格式
- 如何将WEB页面中的数据保存为一个word文件
- web开发中如何打开客户端(pc机上)的串口(注:java)