/** * <p>Freenet content filter code. The purpose of this code, which can * optionally be invoked during a download (and is mainly used in fproxy), * is to identify safe content, and delete or warn about any content that * either we don't understand, or we can't currently make safe.</p> * * <p>Dangerous content here mainly means content (e.g. HTML) that could cause * the browser to do fetches from the non-anonymous web ("web bugs"), or more * complex attacks that achieve the same result (e.g. scripting). We do not * intentionally prohibit specific exploits, unless it is easy to do so, but * we do operate on a "whitelist" principle as much as possible (especially * in the HTML and CSS filters), where we parse the data, and if we can't * understand it, we delete it, because it might be dangerous. This is much * safer than e.g. looking for things that look like URLs.</p> * * <p>We also have a registry of known MIME types, with either filters or * warning messages.</p> * * <p>Finally, we support some degree of "write filtering", i.e. stripping out * potentially compromising data (e.g. EXIF tags) at insert time. And we * support arbitrary transformations of HTML tags via @link TagReplacerCallback * which is used by fproxy for showing loading images etc.</p> * * @see freenet.client.async.ClientGetWorkerThread The driver thread * @see freenet.clients.http.FProxyToadlet The major user of this code practically speaking */ package freenet.client.filter;