Richtlijnen voor scripting en versleuteling scripting-coding-guidelines
Scripts
Raadpleeg voor meer informatie JSAPI-documentatie voor campagne.
Als u een script maakt met behulp van workflow, webtoepassingen of jssp, volgt u de volgende aanbevolen procedures:
-
Probeer SQL-instructies zoveel mogelijk te vermijden.
-
Als dat nodig is, gebruikt u parameterized (prepare statement) functies in plaats van tekenreekssamenvoeging.
Slechte praktijk:
code language-none sqlGetInt( "select iRecipientId from NmsRecipient where sEmail ='" + request.getParameter('email') + "' limit 1" )
Goede praktijken:
code language-none sqlGetInt( "select iRecipientId from NmsRecipient where sEmail = $(sz) limit 1", request.getParameter('email'));
note important IMPORTANT sqlSelect biedt geen ondersteuning voor deze functie, dus u moet de queryfunctie van de klasse DBEngine gebruiken: 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()
Om SQL-injecties te voorkomen, moeten SQL-functies worden toegevoegd aan de lijst van gewenste personen die in Adobe Campaign moet worden gebruikt. Zodra zij aan de lijst van gewenste personen worden toegevoegd, worden zij zichtbaar aan uw exploitanten in de uitdrukkingsredacteur. Zie deze pagina.
Als u gebruikersinvoer gebruikt om filters in vragen of SQL verklaringen te bouwen, moet u hen altijd ontsnappen (verwijs naar JSAPI-documentatie voor campagne - gegevensbescherming: ontsnappingsfuncties). Deze functies zijn:
- NL.XML.escape(data)
- NL.SQL.escape(data)
- NL.JS.escape(data)
- NL.XML.escapeAttribute(data)
Uw nieuwe gegevensmodel beveiligen
Basismap
Raadpleeg de volgende pagina's:
Benoemde rechten
Naast het op mappen gebaseerde beveiligingsmodel kunt u benoemde rechten gebruiken om de acties van de operator te beperken:
-
U kunt sommige systeemfilters (sysFilter) toevoegen om lezing/het schrijven aan uw gegevens te verhinderen (zie deze pagina).
code language-none <sysFilter name="writeAccess"> <condition enabledIf="hasNamedRight('myNewRole')=false" expr="FALSE"/> </sysFilter>
-
U kunt ook bepaalde acties (SOAP-methode) beschermen die in schema's zijn gedefinieerd. Plaats enkel het toegangsattribuut met het overeenkomstige genoemde recht als waarde.
code language-none <method name="grantVIPAccess" access="myNewRole"> <parameters> ... </parameters> </method>
Raadpleeg deze pagina voor meer informatie.
Overlopende tabel
Als u vertrouwelijke gegevens (deel van een schema) afhankelijk van het niveau van de exploitanttoegang moet beschermen, verberg hen niet in de vormdefinitie (enabledIf/visibleIf voorwaarden).
De volledige entiteit wordt geladen door het scherm, kunt u hen in kolomdefinitie ook tonen. Hiervoor moet u een overlooptabel maken. Vernieuwen deze pagina.
Bijschriften toevoegen in webtoepassingen
Het is aan te raden een Captcha toe te voegen op openbare aanlandingspagina's/abonnementspagina's. Helaas is het niet eenvoudig om een captcha toe te voegen aan DCE-pagina's (Digital Content Editor). We tonen u hoe u een v5-captcha of een Google reCAPTCHA toevoegt.
De algemene manier om een captcha in DCE toe te voegen is een verpersoonlijkingsblok tot stand te brengen om het gemakkelijk binnen de paginacontent te omvatten. U moet een Script en Testen.
Personalisatieblok
-
Ga naar Resources > Campaign Management > Personalization blocks en een nieuwe te maken.
-
Gebruik de Web application inhoudstype en controle Visible in the customization menus.
Raadpleeg deze sectie voor meer informatie.
Hier is een voorbeeld van een Campagne captcha:
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> <% } %>
-
Met de lijnen 1 tot en met 6 worden alle benodigde inputs gegenereerd.
-
Regels 7 tot het eind behandelen fouten.
-
Met regel 4 kunt u de grootte van het grijze vak (breedte/hoogte) en de lengte van het gegenereerde woord (minWordSize/maxWordSize) wijzigen.
-
Voordat u Google reCAPTCHA kunt gebruiken, moet u zich registreren bij Google en een nieuwe reCAPTCHA-site maken.
<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>
U zou de bevestigingsknoop moeten kunnen onbruikbaar maken, maar aangezien wij geen standaardknoop/verbinding hebben, is het beter om het in de HTML zelf te doen. Als u wilt weten hoe u dit kunt doen, raadpleegt u deze pagina.
-
De webtoepassing bijwerken
-
Open de eigenschappen van uw webtoepassing om een Booleaanse variabele met de naam captchaValid.
-
Tussen de laatste pagina en de Storage activiteit, voeg een Script en Test.
Sluit de vertakking aan True aan de Storage en de andere pagina die het captcha zal hebben.
-
Bewerk de voorwaarde van de vertakking Waar met
"[vars/captchaValid]"
is True. -
Bewerk de Script activiteit. De inhoud is afhankelijk van de gekozen captcha-engine.
-
Tot slot kunt u uw gepersonaliseerde blok in de pagina toevoegen: verwijs naar deze pagina.
<head>...</head>
):<script src="https://www.google.com/recaptcha/api.js" async defer></script>
Campagne captcha
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
Regel 6: u kunt om het even welk soort foutenmelding zetten.
Google recaptcha
Raadpleeg de officiƫle documentatie.
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")
}
Als u JSON.parse wilt gebruiken, moet u "shared/json2.js" opnemen in uw webApp:
Sinds build 8797, om de verificatie API URL te gebruiken, moet u het aan de lijst van gewenste personen in het serverConf- dossier toevoegen door in urlPermission knoop toe te voegen:
<url dnsSuffix="www.google.com" urlRegEx="https://www.google.com/recaptcha/api/siteverify"/>