1. import java.util.HashMap;
  2. import java.util.Map;
  3. import java.util.logging.Logger;
  4. public class QueryStringValidator {
  5. private static final Logger logger = Logger.getLogger(QueryStringValidator.class.getName());
  6. public static String validateQueryString(String queryString, Map<String, String> allowedParameters) {
  7. if (queryString == null || queryString.isEmpty()) {
  8. logger.warning("Query string is null or empty.");
  9. return ""; // Or handle as appropriate for your use case
  10. }
  11. Map<String, String> parsedParams = parseQueryString(queryString);
  12. for (Map.Entry<String, String> entry : parsedParams.entrySet()) {
  13. String paramName = entry.getKey();
  14. String paramValue = entry.getValue();
  15. if (!allowedParameters.containsKey(paramName)) {
  16. logger.error("Invalid query parameter: " + paramName + " with value: " + paramValue);
  17. return ""; // Or handle as appropriate. Could return null, throw exception, etc.
  18. }
  19. // Optionally add validation logic for the parameter value here
  20. // Example: if (paramName.equals("age") && !isValidAge(paramValue)) { ... }
  21. }
  22. return queryString; // Return the original query string if all parameters are valid.
  23. }
  24. private static Map<String, String> parseQueryString(String queryString) {
  25. Map<String, String> params = new HashMap<>();
  26. if (queryString != null && !queryString.isEmpty()) {
  27. String[] pairs = queryString.split("&");
  28. for (String pair : pairs) {
  29. String[] parts = pair.split("=");
  30. if (parts.length == 2) {
  31. String paramName = parts[0];
  32. String paramValue = parts[1];
  33. params.put(paramName, paramValue);
  34. }
  35. }
  36. }
  37. return params;
  38. }
  39. public static void main(String[] args) {
  40. // Example usage
  41. Map<String, String> allowedParams = new HashMap<>();
  42. allowedParams.put("id", "true");
  43. allowedParams.put("name", "test");
  44. String queryString1 = "id=true&name=test&extra=value";
  45. String queryString2 = "id=true&name=test";
  46. String queryString3 = "id=true&name=test&age=30"; //age is not allowed
  47. String validatedQueryString1 = validateQueryString(queryString1, allowedParams);
  48. String validatedQueryString2 = validateQueryString(queryString2, allowedParams);
  49. String validatedQueryString3 = validateQueryString(queryString3, allowedParams);
  50. System.out.println("Validated Query String 1: " + validatedQueryString1);
  51. System.out.println("Validated Query String 2: " + validatedQueryString2);
  52. System.out.println("Validated Query String 3: " + validatedQueryString3);
  53. }
  54. }

Add your comment