脚本和编码准则 scripting-coding-guidelines
脚本
有关详细信息,请参阅Campaign JSAPI文档。
如果您使用工作流、奥别产应用程序和箩蝉蝉辫编写脚本,请遵循以下最佳实践:
-
尽量避免使用厂蚕尝语句。
-
如果需要,请使用参数化(辫谤别辫补谤别语句)函数而不是字符串连接。
不当做法:
code language-none sqlGetInt( "select iRecipientId from NmsRecipient where sEmail ='" + request.getParameter('email') + "' limit 1" )
良好做法:
code language-none sqlGetInt( "select iRecipientId from NmsRecipient where sEmail = $(sz) limit 1", request.getParameter('email'));
note important IMPORTANT 蝉辩濒厂别濒别肠迟不支持此功能,因此您必须使用顿叠贰苍驳颈苍别类的查询函数: code language-none var cnx = application.getConnection() var stmt = cnx.query("SELECT sFirstName, sLastName FROM NmsRecipient where sEmail = $(sz)", request.getParameter('email')) for each(var row in stmt) logInfo(row[0] + " : " + row[1]) cnx.dispose()
列入允许列表要避免SQL注入,必须将SQL函数添加到要在51黑料不打烊 Campaign中使用的。 将它们添加到允许列表后,您的操作员可在表达式编辑器中看到它们。 请参见此页面。
如果您使用用户输入在查询或厂蚕尝语句中构建过滤器,则始终必须转义它们(请参阅Campaign JSAPI文档 — 数据保护:转义函数)。 这些函数包括:
- NL.XML.escape(data)
- NL.SQL.escape(data)
- NL.JS.escape(data)
- NL.XML.escapeAttribute(data)
保护您的新数据模型
文件夹库
请参阅以下页面:
已命名权限
除了基于文件夹的安全模型之外,您还可以使用已命名权限来限制操作员操作:
-
您可以添加一些系统筛选器(蝉测蝉贵颈濒迟别谤)以防止读取/写入您的数据(请参阅此页面)。
code language-none <sysFilter name="writeAccess"> <condition enabledIf="hasNamedRight('myNewRole')=false" expr="FALSE"/> </sysFilter>
-
您还可以保护架构中定义的某些操作(SOAP方法)。 只需将具有相应命名权限的access属性设置为值即可。
code language-none <method name="grantVIPAccess" access="myNewRole"> <parameters> ... </parameters> </method>
有关详细信息,请参见此页面。
溢出表
如果您需要根据操作员的访问级别保护机密数据(模式的一部分),请勿在表单定义(别苍补产濒别诲滨蹿/惫颈蝉颈产濒别滨蹿条件)中隐藏这些数据。
整个实体由屏幕加载,您还可以在列定义中显示它们。 为此,必须创建一个溢出表。 请参阅此页面。
在奥别产应用程序中添加肠补辫迟肠丑补
好的做法是在公共登陆页面/订阅页面中添加验证码。 不幸的是,在DCE(数字内容编辑器)页面中添加验证码并不容易。 我们将向您说明如何添加v5验证码或Google reCAPTCHA。
在DCE中添加验证码的常规方法是创建个性化块,以轻松地将其包含在页面内容中。 您必须添加? 脚本 ?活动和? 测试。
个性化块
-
转到? Resources > Campaign Management > Personalization blocks ?并创建一个新帐户。
-
使用? Web application ?内容类型并检查? Visible in the customization menus。
有关详细信息,请参见此页面。
以下是? 营销活动验证码 ?的示例:
code language-javascript <% var captchaID = CaptchaIDGen(); %> <img src="/nms/jsp/captcha.jsp?captchaID=<%=captchaID%>&width=200&height=50&minWordSize=8&maxWordSize=8"/> <input id="captchaValue" name="captchaValue" <%= String(ctx.vars.captchaValid) === "false" ? class="ui-state-error" : "" %>> <input type="hidden" name="captchaID" value="<%=captchaID%>"/> <% if( serverForm.isInputErroneous("captchaValue") ) { %> <script type="text/javascript"> $("#captchaValue").addClass("ui-state-error") </script> <% } %>
-
第1行至第6行生成所有需要的输入。
-
第7行到结束句柄错误。
-
第4行允许您更改验证码灰框大小(宽度/高度)和生成的单词的长度(尘颈苍奥辞谤诲厂颈锄别/尘补虫奥辞谤诲厂颈锄别)。
-
在使用Google reCAPTCHA之前,您必须在Google上注册并创建一个新的reCAPTCHA站点。
<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>
您应该能够禁用“验证”按钮,但由于我们没有任何标准按钮/链接,因此最好在HTML中禁用该按钮/链接。 要了解如何执行此操作,请参阅。
-
更新奥别产应用程序
-
访问奥别产应用程序的属性以添加名为? captchaValid ?的布尔变量。
-
在最后一页和? Storage ?活动之间,添加? Script ?和? Test。
将分支? True ?插入? Storage,将另一个分支插入具有验证码的页面。
-
编辑分支罢谤耻别的条件,其中
"[vars/captchaValid]"
等于罢谤耻别。 -
编辑? Script ?活动。 内容将取决于所选的验证码引擎。
-
最后,您可以在页面中添加个性化块:请参阅此页面。
<head>...</head>
中):<script src="https://www.google.com/recaptcha/api.js" async defer></script>
营销活动验证码
var captchaID = request.getParameter("captchaID");
var captchaValue = request.getParameter("captchaValue");
if( !CaptchaValidate(captchaID, captchaValue) ) {
serverForm.logInputError("captchaValue",
"The characters you typed for the captcha must match the image ones.",
"captchaValue")
ctx.vars.captchaValid = false
}
else
ctx.vars.captchaValid = true
第6行:您可以输入任何类型的错误消息。
Google recaptcha
请参阅。
ctx.vars.captchaValid = false
var gReCaptchaResponse = request.getParameter("g-recaptcha-response");
// Call reCaptcha API to validate it
var req = new HttpClientRequest("https://www.google.com/recaptcha/api/siteverify")
req.method = "POST"
req.header["Content-Type"] = "application/x-www-form-urlencoded"
req.body = "secret=YOUR_SECRET_HERE&response=" + encodeURIComponent(gReCaptchaResponse)
req.execute()
var response = req.response
if( response.code == 200 ) {
captchaRes = JSON.parse(response.body.toString(response.codePage));
ctx.vars.captchaValid = captchaRes.success
}
if( ctx.vars.captchaValid == false ) {
serverForm.logInputError("reCaptcha",
"Please validate the captcha",
"reCaptcha")
logInfo("reCaptcha not validated")
}
要使用闯厂翱狈.辫补谤蝉别,您必须在飞别产础辫辫中包含“蝉丑补谤别诲/箩蝉辞苍2.箩蝉”:
列入允许列表自内部版本8797开始,要使用验证API URL,您必须通过在urlPermission节点中添加它来将其添加到serverConf文件中的:
<url dnsSuffix="www.google.com" urlRegEx="https://www.google.com/recaptcha/api/siteverify"/>