All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.lixbox.common.converter.StringConverter Maven / Gradle / Ivy

There is a newer version: 11.2.0.3
Show newest version
/*******************************************************************************
 *    
 *                           FRAMEWORK Lixbox
 *                          ==================
 *      
 * This file is part of lixbox-common.
 *
 *    lixbox-iam is free software: you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation, either version 3 of the License, or
 *    (at your option) any later version.
 *
 *    lixbox-iam is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *    along with lixbox-common.  If not, see 
 *   
 *   @AUTHOR Lixbox-team
 *
 ******************************************************************************/
package fr.lixbox.common.converter;

import java.util.regex.Pattern;



/**
 * Cette classe est le transtypeur du Integer
 * 
 * @author ludovic.terral
 */
public class StringConverter extends BaseConverter
{
	// ----------- Attribut -----------
	private static final long serialVersionUID = 7116848751479120044L;



	// ----------- Methode ----------- 
    @Override    
    public String convertFromPresentationFormat(String target)
    {
        target = filtrerCrossScripting(target);
        return target;
    }



    @Override
    public String formatForPresentation(Object target)   
    {
        return (null == target)?"":target.toString();
    }

    
    
    private String filtrerCrossScripting(String value) 
    {
        if (value != null && !value.contains("[CDATA[")) 
        {
            // Avoid null characters
            value = value.replace("", "");

            // Avoid anything between script tags
            var scriptPattern = Pattern.compile("", Pattern.CASE_INSENSITIVE);
            value = scriptPattern.matcher(value).replaceAll("");

            // Avoid anything in a src='...' type of expression
            scriptPattern = Pattern.compile("src[\r\n]*=[\r\n]*\\\'(.*?)\\\'", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
            value = scriptPattern.matcher(value).replaceAll("");

            scriptPattern = Pattern.compile("src[\r\n]*=[\r\n]*\\\"(.*?)\\\"", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
            value = scriptPattern.matcher(value).replaceAll("");

            // Remove any lonesome  tag
            scriptPattern = Pattern.compile("", Pattern.CASE_INSENSITIVE);
            value = scriptPattern.matcher(value).replaceAll("");

            // Remove any lonesome