EVAL 如何防止 脚本注入

MichaelMX 2013-07-04 03:26:10
前台:
<asp:Repeater ID="Repeater1" runat="server" ...
....
<ItemTemplate>
<tr>
<td >
<%# Eval("ReceiveText")%>
</td>
后台:
var data = GetList();
Repeater1.DataSource = data.EntityList;
Repeater1.DataBind();

从数据库读取的数据中有一条: >''><script>alter(5)</script>
导致IE9页面运行出错。
已经写好转义的方法ReplaceHtmlTag()。去掉<>/\''等。

现在的问题是,在哪使用这个方法?还是我在Repeater里面加一个事件解决?事件解决的话又该如何?
求解决详细代码。
...全文
642 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
MichaelMX 2013-07-05
  • 打赏
  • 举报
回复
求高手指点~~
MichaelMX 2013-07-04
  • 打赏
  • 举报
回复
这个问题好像出的不是很多。现在用EVAL的少吧
MichaelMX 2013-07-04
  • 打赏
  • 举报
回复
<%#GetReceiveText(Convert.ToString(Eval("ReceiveText")))%> 试了,无效
  • 打赏
  • 举报
回复
把EVAL("ReceiveText")强制转换成你要传递的类型
  • 打赏
  • 举报
回复
.cs中

        /// <summary>
        /// 字符串截取方法
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="len"></param>
        /// <returns></returns>
        public static string subStr(string obj, int len)
        {
            if (obj.Length > len)
                return obj.ToString().Substring(0, len) + "...";
            else
                return obj.ToString();
        }
在.aspx中

<%=subStr(newsOneList[i].NewsTitle, 30)%>
你的向这样

 <asp:Label ID="IsDisplay" runat="server" Text='<%# Isdisplay(Convert.ToBoolean(Eval("IsDisplay")))%>'></asp:Label>
MichaelMX 2013-07-04
  • 打赏
  • 举报
回复
试了,不行。现在是EVAL("ReceiveText")这里直接出错,我将整体作为一个参数传过去,没用。
  • 打赏
  • 举报
回复
在.cs中写方法,在.aspx调用

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧