允许在MVC4中使用一些html标记
如何允许客户端在MVC4中使用html标记? 我想将记录保存到数据库,当它在视图中提取时,只允许一些HTML标记(),其他标记必须表示为文本 我的控制器:允许在MVC4中使用一些html标记,html,.net,asp.net-mvc,asp.net-mvc-4,Html,.net,Asp.net Mvc,Asp.net Mvc 4,如何允许客户端在MVC4中使用html标记? 我想将记录保存到数据库,当它在视图中提取时,只允许一些HTML标记(),其他标记必须表示为文本 我的控制器: [ValidateInput(false)] [HttpPost] public ActionResult Rep(String a) { var dbreader = new DataBaseReader(); var text = Request["repor
[ValidateInput(false)]
[HttpPost]
public ActionResult Rep(String a)
{
var dbreader = new DataBaseReader();
var text = Request["report_text"];
dbreader.SendReport(text, uid, secret).ToString();
...
}
我的看法是:
@{
var dbreader = new DataBaseReader();
var reports = dbreader.GetReports();
foreach (var report in reports)
{
<div class="report_content">@Html.Raw(report.content)</div>
...
}
}
@{
var dbreader=newdatabasereader();
var reports=dbreader.GetReports();
foreach(报告中的var报告)
{
@Html.Raw(report.content)
...
}
}
关闭报告文本的验证(1)并编写自定义HTML编码器(2):
第1步:
Request.Unvalidated().Form["report_text"]
更多信息。您不需要关闭整个控制器操作的验证
第二步:
Request.Unvalidated().Form["report_text"]
编写自定义html编码器(将除b、i、img之外的所有标记转换为例如:script->;ltscript;gt),因为您正在自定义请求验证和html标记筛选的默认行为。考虑通过检查传递给存储过程/函数的SQL参数等来保护自己免受SQL注入攻击。 < P>如果您正在尝试查看视图模型对象的某些属性以接受HTML文本,请使用 在绑定到视图之前
model.UserComment=model.UserComment.Replace("<othertagstart/end>",""); //hard
model.UserComment=model.UserComment.Replace(“,”)//坚硬的
您可以将所有<字符替换为HTML实体:
tags = tags.Replace("<", "<");
tags=tags.Replace(“,”)
.替换(“/b>”,“”)
.替换(“i>”,“”)
.Replace(“/i>”,“”)
.Replace(“img”),“您可能想签出BBCode。这样您就可以控制哪些是允许的,哪些是不允许的,并防止非法使用
这将像这样工作:
用户提交类似于“会议现在将在[b]星期一举行”[/b]的内容
在将其保存到数据库之前,请删除所有真正的html标记(“<…>”),以避免使用非法标记或代码注入,但保留伪标记不变
查看时,仅将允许的伪html标记转换为真实html
我找到了问题的解决方案:
html = Regex.Replace(html, "<b>(.*?)</>", "<b>$1</b>");
html = Regex.Replace(html, "<i>(.*?)</i>", "<i>$1</i>");
html = Regex.Replace(html, "<img(?:.*?)src="(.*?)"(?:.*?)/>", "<img src=\"$1\"/>");
html=Regex.Replace(html,“b(.*?/”,“$1”);
html=Regex.Replace(html,“i(.*?)/i”,“$1”);
html=Regex.Replace(html,“img(?:*?)src=“(*?)”(?:*?/”,“”);
我没有得到你想要的,你能补充一些进一步的解释吗?你是否在@Html.Raw
中遇到错误?不,我没有收到错误,但现在我的站点易受XSS攻击
html = Regex.Replace(html, "<b>(.*?)</>", "<b>$1</b>");
html = Regex.Replace(html, "<i>(.*?)</i>", "<i>$1</i>");
html = Regex.Replace(html, "<img(?:.*?)src="(.*?)"(?:.*?)/>", "<img src=\"$1\"/>");