Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
Prevent SQL injection
When using Hash Variable that uses URL parameter or user-inputted value in the SQL query, ensure that these hash variable(s) are escaped in the query!
Make use of hash variable escape keywords, see Hash Variable - Escaping the Resultant Hash Variable.
Example of VULNERABLE query :
SELECT * FROM app_fd_sample_table WHERE
c_value = '#requestParam.id#'
To fix this, use ?sql hash variable escape:
SELECT * FROM app_fd_sample_table WHERE c_value = '#requestParam.id?sql#'
Figure 1: Database SQL Query Options Properties
Name | Description |
---|---|
Datasource | Target database to execute SQL statements on. Choices:-
|
Custom JDBC Driver | JDBC driver name. Example values:
Only applicable to "Custom Datasource" option. |
Custom JDBC URL | Database connection URL. Example: Only applicable to "Custom Datasource" option. |
Custom JDBC Username | Database username. Example: Only applicable to "Custom Datasource" option. |
Custom JDBC Password | Specified database user's password. Only applicable to "Custom Datasource" option. Test the connection parameters Click on the "Test Connection" button at the bottom of the page to quickly test out your configurations. |
Use AJAX for cascade options? | When checked, this allows these fields to dynamically load available options based on the other field value (grouping column) when dealing with tremendous amount of selections. Read more at Ajax Cascading Drop-Down List. Important Do not forget to configure the dependency field in Field ID to control available option based on Grouping in the Advanced Options tab. Important Use question mark (?) in your SQL SELECT Query to represent dependency values. |
Add Empty Option | Click this checkbox if you want an empty option in the selectbox. Clicking this option will display the following field:
|
Empty Option Label | Adds label to the empty option |
SQL SELECT Query | If a column name contains reserved keywords, do ensure it is encapsulated properly. For example for MySQL, if the column identifier itself contains a dot symbol ( . ), it should be encapsulated like this: SELECT `myAppName.myColumn` FROM app_fd_myTable; To populate a selectbox, for example, you need to return at least 2 columns. The first column is used for Id. The second column is used for Label. Example SELECT username, username FROM dir_user ORDER BY username ASC When Use AJAX for cascade options is checked, make sure that a question mark is placed within the query. Example SELECT username, CONCAT(lastName, ' ', firstName) FROM dir_user WHERE timeZone = (?) On multi-select box form element on cascade and when using JDBC, remember to use brackets to enclose the ? parameter in Example SELECT id, c_field1 FROM app_fd_myTable WHERE id IN (?) Table & Column Naming
|