在javascript中使警报消息安全的最好方法

本文关键字:安全 方法 消息 javascript | 更新日期: 2023-09-27 18:06:36

我想通过注册一个脚本来显示来自asp.net页面的消息,有时甚至是来自错误的异常代码。我使用以下代码:

ScriptManager.RegisterStartupScript(this, Page.GetType(), "NoDept", "alert('Adjustments require the Total Amount to be ZERO to post!');", true);

如果我可以决定在开发期间显示的信息,那么这非常有效,但是如果我想显示来自应用程序的数据,则可能包含无效文本,这当然会破坏脚本并且不显示。例如消息中带有'。

当我试图显示来自异常的消息时,我遇到了这个问题,例如:

ScriptManager.RegisterStartupScript(this, Page.GetType(), "processError", "alert('" + ptcred.TransactionError + "');", true);

ptcred。TransactionError是ASP。. NET异常错误,可能包含无效字符。

在我的alert()函数中处理这些信息而不会搞砸我的javascript的最佳方法是什么?也许jQuery可以做一些事情来清理它?

编辑:我应该解释一下,我想继续简单地注册一个警报脚本,这很容易和方便。只是想知道是否有像HTML这样的东西。编码或其他东西,将清理信息,使消息不会搞砸脚本。

谢谢,科里

在javascript中使警报消息安全的最好方法

您需要转义任何引号字符。

Regex.Replace(ptcred.TransactionError, "('"|'')", "''$1");

可以调用HttpUtility。JavaScriptStringEncode方法(在ASP中引入)。NET 4.0):

ScriptManager.RegisterStartupScript(
    this, Page.GetType(), "processError",
    "alert('" + HttpUtility.JavaScriptStringEncode(ptcred.TransactionError) + "');",
    true);

警告:如果TransactionError可能包含用户输入的数据,那么像上面那样正确编码它是非常重要的。否则,您可能会引入安全漏洞并将您的应用程序暴露给跨站点脚本(XSS)攻击。我不知道ChaosPandion的答案(转义单引号和双引号)是否足以避免XSS