[1.3.0] More control of URIs granted
[htmlpurifier.git] / docs / proposal-new-directives.txt
blobc377f0613277949c7229b77b6359448cb8ed9630
2 Configuration Ideas
4 Here are some theoretical configuration ideas that we could implement some
5 time.  Note the naming convention: %Namespace.Directive
7 %Attr.IDPrefix - prefix all ids with this
9 %Attr.RewriteFragments - if there's %Attr.IDPrefix we may want to transparently
10     rewrite the URLs we parse too.  However, we can only do it when it's a pure
11     anchor link, so it's not foolproof
13 %Attr.ClassBlacklist,
14 %Attr.ClassWhitelist,
15 %Attr.ClassPolicy - determines what classes are allowed. When
16     %Attr.ClassPolicy is set to Blacklist, only allow those not in
17     %Attr.ClassBlacklist. When it's Whitelist, only allow those in
18     %Attr.ClassWhitelist.
20 %Attr.MaxWidth, 
21 %Attr.MaxHeight - caps for width and height related checks.
22     (the hack in Pixels for an image crashing attack could be replaced by this)
24 %URI.Munge - will munge all external URIs to a different URI, which redirects
25     the user to the applicable page. A urlencoded version of the URI
26     will replace any instances of %s in the string. One possible
27     string is 'http://www.google.com/url?q=%s'. Useful for preventing
28     pagerank from being sent to other sites, but can also be used to
29     redirect to a splash page notifying user that they are leaving your
30     website.
32 %URI.AddRelNofollow - will add rel="nofollow" to all links, preventing the
33     spread of ill-gotten pagerank
35 %URI.RelativeToAbsolute - transforms all relative URIs to absolute form
37 %URI.HostBlacklist - strings that if found in the host of a URI are disallowed
38 %URI.HostBlacklistRegex - regexes that if matching the host are disallowed
39 %URI.HostWhitelist - domain names that are excluded from the host blacklist
40 %URI.HostPolicy - determines whether or not its reject all and then whitelist
41     or allow all in then do specific blacklists with whitelist intervening.
42     'DenyAll' or 'AllowAll' (default)
44 %URI.DisableIPHosts - URIs that have IP addresses for hosts are disallowed.
45     Be sure to also grab unusual encodings (dword, hex and octal), which may
46     be currently be caught by regular DNS
47 %URI.DisableIDN - Disallow raw internationalized domain names. Punycode
48     will still be permitted.
50 %URI.ConvertUnusualIPHosts - transform dword/hex/octal IP addresses to the
51     regular form
52 %URI.ConvertAbsoluteDNS - Remove extra dots after host names that trigger
53     absolute DNS.  While this is actually the preferred method according to
54     the RFC, most people opt to use a relative domain name relative to . (root).