Understanding dynamic system settings
To enable greater security in your application, configure the following dynamic system settings to enable greater security in your application before moving your application from development to a production environment.
Dynamic system setting information
As a leading practice, before moving your application from development to a production environment, configure the following dynamic system settings to enable greater security in your application.
prconfigprefix on a per-node basis in the prconfig.xml file; however this is not a recommended leading practice.
|Purpose||Default||Secure setting||Security Implications|
|prconfig/alerts/database/operationTimeThreshold/suppressInserts/default||true||true||Recommended for all deployments. Prevents SQL statements from being written to the alert log in clear text. By default, all entries in the alert log show all data associated with the alert, including customer ID numbers, passwords, and other sensitive data. Setting this entry to true prevents sensitive data from being written to the alert log.Prevents SQL injection attacks and prevents exposing sensitive information about how data is written to the database.|
|prconfig/alerts/parameterpage/allowedKeywords/default||Blank||Blank||Eliminates PII data from the alert log, making it potentially more difficult to resolve the issue reported by the alert. The following keywords are supported: pyActivity, pyStream, action, harnessName, StreamClass, StreamName, ViewClass, ViewPurpose, ViewOwner, objClass, insName, Format, openHandle, ActivityClassToExecute, ActivityNameToExecute, TaskStatus, FlowClass, FlowType, flowType, CustomActivityName, CustomActivityClassName, actionName, productName, productVersion, portal, pyAction, pyClassName, primaryPageClass, ViewInsKey, InsKey, pyReportName, pyReportClass.|
|prconfig/alerts/parameterpage/remoteFilterType/default||Allowed||Allowed||Eliminates all clear-text information in the alert log, making it potentially more difficult to resolve the issue reported by the alert.|
|prconfig/authentication/UsePreauthenticationCookie/default||true||true||By default, Pega Platform generates a cookie for each user to track the user's requestor ID throughout the user session. The setting adds security to the cookie and helps guard against replay attacks.If this entry is set to false, the cookie contains the same value whether the user is authenticated or not.If this entry is set to true, Pega Platform uses a different cookie value when the requestor is not authenticated.|
|prconfig/crypto/onewayhashalgorithm/default||bcrypt||bcrypt||Hashing algorithm for operator password storage. As a best practice, set this setting before creating the operator that is used during testing. The bcrypt default is salted.|
|prconfig/Database/dumpStats/default||false||false||Recommended for all development and testing deployments. This is a high-volume-output tool only for use in development and testing environments. Do not use it in production.Prevents exposing sensitive information that could otherwise aid a hacker in predicting system behavior.|
|prconfig/HTTP/SetSecureCookie/default||false||true||Use this setting if running Pega Platform over HTTPS. The browser sends cookies only across SSL.This setting prevents exposure of the session ID cookie and prevents session hijacking.|
|prconfig/HTTP/UseNoCacheHeaders/default||true||true||Recommended for all deployments. Prevents dynamic content and sensitive information from being cached on the client, regardless of expiration time. Also disables tracer functionality and forces fresh loading of the dynamic content from the server for each request.Prevents session hijacking, injection attacks, and cross-site scripting.|
|prconfig/initialization/DisableAutoComplete/default||false||true||Recommended for all deployments. This setting prevents client-side storage of user name and password combinations. Use this setting in conjunction with clearing any existing stored sensitive information in the browser.|
|prconfig/initialization/DisplayExceptionTraceback/default||false||false||Recommended for all deployments. This setting prevents display of stack-trace when an error occurs, and removes the Show Exception Details button, which could expose sensitive information in a production environment.|
|prconfig/initialization/ProfileApplication/default||false||false||Recommended for all deployments. This setting turns off the Application Profiler, which writes sensitive information to log files.|
|prconfig/initialization/PromoteEmbeddedPortals/default||false||true||Recommended for all deployments. This setting prevents a Pega Platform HTML frame from being embedded in an invisible additional frame that could contain malicious code.|
|prconfig/initialization/ErrorOnInvalidThreadName/default||true||true||Rejects requests that contain invalid characters in the threadname of the URL that potentially can be malicious, for example, symbol characters.|
|prconfig/Timeout/Browser/default||900||900 (or fewer)||Specifies the time-out value (in seconds) for the user session. If the user does not perform any system action specified by the time-out value, the user session is terminated.|
|prconfig/security/showSQLInListPage/default||true||false||Suppresses visibility of generated SQL on the clipboard page.|
|prconfig/security/UnexpectedInputPropertyAlert/default||true||true||Ignores unexpected properties in a request.|
|prconfig/security/CSP/PolicyEnabled/default||true||true||Enables Content Security Policy (CSP) support.|
|EnableAttributeBasedSecurity||true||true||Enables enforcement of access control policies and access control policy conditions (ABAC).|
|DiscoverableItemsIncludedForSummaryReport||false||false||Enables the discoverability feature associated with read-type access control policies.|
|security/enableJavaInjectionMitigation||false||true||Enables java mitigation detection for all ruleset versions.|
|prconfig/alerts/parameterpage/obfuscateKeywords/default||Blank||See the Security implications column||Deprecated. Do not use this setting. Always leave this setting blank.|
|prconfig/initialization/SubmitObfuscatedURL/default||optional||required||Deprecated. (Recommended for all deployments. This setting also requires the urlencryption entry to be enabled. These two entries work as a pair. Causes Pega Platform to reject clear-text URLs.)|
|prconfig/initialization/Urldebug/default||none||none||Deprecated. (Recommended for all deployments. This setting prevents obfuscated URLs from being written to the log file. This prevents exposing potentially sensitive information.)|
|prconfig/initialization/Urlencryption/default||false||true||Deprecated. (Recommended for all deployments. This setting works as a pair with SubmitObfuscatedURL. The setting enables or disables the encryption of the URLs.) |
Note: URL encryption only works in the same session.
- Creating a dynamic system setting
Add a dynamic system settings rule to change default system behavior.
- Using HTTP response headers
To improve the security of your application against client-based attacks, you can use the HTTP response headers that are supported by your browser.
- Bcrypt hashing algorithm for Password property types
To provide extra protection against brute-force attacks, Pega Platform uses salted bcrypt as the default hashing algorithm for Password property types. Bcrypt uses a modified key setup algorithm that requires a long time to process. Key strengthening makes a password more secure against brute-force attacks, meaning potential attackers must spend a substantial amount of time testing every possible key.