/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library 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 Lesser General Public License for more * details. */ package com.liferay.portal.kernel.sanitizer; import java.io.InputStream; import java.io.OutputStream; import java.util.Map; /** * Provides an interface and constants for sanitizer component implementations. * Commonly, sanitizers are implemented for stripping offensive vocabulary from * content or for removing malicious HTML content, such as cross-site scripting * (CSS). Multiple implementations can be deployed in a hook plugin and * specified in a comma separated list of values for the * <code>sanitizer.impl</code> portal property (see <a * href="http://docs.liferay.com/portal/7.0/propertiesdoc/portal.properties.html#Sanitizer">Sanitizer</a>). * All installed sanitizers are chained. * * @author Zsolt Balogh * @author Brian Wing Shun Chan */ public interface Sanitizer { public static final String MODE_ALL = "ALL"; public static final String MODE_BAD_WORDS = "BAD_WORDS"; public static final String MODE_XSS = "XSS"; /** * Returns the sanitized content as a byte array. Implementations may modify * the input byte array. * * @param companyId the primary key of the portal instance * @param groupId the primary key of the site's group * @param userId the user who changed the content * @param className the class name of the content model implementation * @param classPK the primary key of the content to sanitize, * <code>0</code> if not available * @param contentType the content type. For more information, see * {@link com.liferay.portal.kernel.util.ContentTypes}. * @param modes ways in which to run the sanitizer, such as {@link * #MODE_ALL}, {@link #MODE_BAD_WORDS}, and/or {@link #MODE_XSS} * @param bytes the content to be sanitized * @param options a map of options for the sanitizer * @return the sanitized content * @throws SanitizerException if a sanitizer exception occurred * @deprecated As of 7.0.0, replaced by {@link #sanitize(long, long, long, * String, long, String, String[], String, Map)} */ @Deprecated public byte[] sanitize( long companyId, long groupId, long userId, String className, long classPK, String contentType, String[] modes, byte[] bytes, Map<String, Object> options) throws SanitizerException; /** * Sanitizes the input stream content, assigning the results to the output * stream. * * @param companyId the primary key of the portal instance * @param groupId the primary key of the site's group * @param userId the user who changed the content * @param className the class name of the content model implementation * @param classPK the primary key of the content to sanitize, * <code>0</code> if not available * @param contentType the content type. For more information, see * {@link com.liferay.portal.kernel.util.ContentTypes}. * @param modes ways in which to run the sanitizer, such as {@link * #MODE_ALL}, {@link #MODE_BAD_WORDS}, and/or {@link #MODE_XSS} * @param inputStream the content to be sanitized * @param outputStream the result of the sanitizing process * @param options a map of options for the sanitizer * @throws SanitizerException if a sanitizer exception occurred * @deprecated As of 7.0.0, replaced by {@link #sanitize(long, long, long, * String, long, String, String[], String, Map)} */ @Deprecated public void sanitize( long companyId, long groupId, long userId, String className, long classPK, String contentType, String[] modes, InputStream inputStream, OutputStream outputStream, Map<String, Object> options) throws SanitizerException; /** * Returns the sanitized content as a string. * * @param companyId the primary key of the portal instance * @param groupId the primary key of the site's group * @param userId the user who changed the content * @param className the class name of the content model implementation * @param classPK the primary key of the content to sanitize, * <code>0</code> if not available * @param contentType the content type. For more information, see {@link * com.liferay.portal.kernel.util.ContentTypes}. * @param modes ways in which to run the sanitizer, such as {@link * #MODE_ALL}, {@link #MODE_BAD_WORDS}, and/or {@link #MODE_XSS} * @param content the content to sanitize * @param options the options map * @return the sanitized content * @throws SanitizerException if a sanitizer exception occurred */ public String sanitize( long companyId, long groupId, long userId, String className, long classPK, String contentType, String[] modes, String content, Map<String, Object> options) throws SanitizerException; }