460 likes | 563 Views
Getting Your Web Site P3P Compliant. Joshua Freed <jfreed@neted.org> http://www.neted.org. P3P Deployment. Planning for deployment Understanding how policies are applied to sites Decisions to make Developing the policies and policy reference files How to develop them Tools to help
E N D
Getting Your Web Site P3P Compliant Joshua Freed <jfreed@neted.org> http://www.neted.org
P3P Deployment • Planning for deployment • Understanding how policies are applied to sites • Decisions to make • Developing the policies and policy reference files • How to develop them • Tools to help • Deployment and testing • How to deploy • Testing the deployment
The Biggest Challenge • Toughest and most important aspect: • Get a clear understanding of what information site collects • Ensuring that your privacy statement accurately reflects these actions
Applying policies to sites • P3P policies can be applied broadly or narrowly • As broad as an entire site • As narrow as a single URL on a site • Maximum is a single hostname • P3P policies are applied to "HTTP entities" • That is, URLs, not pages • A page is typically many "entities" (frameset, framed content, graphics, style sheets, ...) • It is OK to overstate a site's practices, but not understate them
Applying policies to cookies • Can be applied broadly or narrowly: • Can apply to all cookies on a site • Or, can specify applicable cookies by name, domain of use, or path of use • Domain/path of use are set by the cookie (hosts to send the cookie to, path within that host to send the cookie to) • Narrow scope for cookies only useful if you are willing for visitors to accept some cookies but not all cookies
How is it done? • P3P uses a policy reference file which: • Lists the P3P policies used by the site • States what parts of the site and what cookies are covered by each policy • A policy reference file can only cover resources on that host • Each host needs its own policy reference file • The policies themselves can be on another host
GET /w3c/p3p.xml HTTP/1.1 Host: foo.com Request Policy Reference File Send Policy Reference File Request P3P Policy Send P3P Policy GET /x.html HTTP/1.1 Host: foo.com . . . Request web page HTTP/1.1 200 OK Content-Type: text/html . . . Send web page PRF Request in Action Web Server
Policy Reference File Contents • Allow specification of which policy applies to which resources on a site • <EXPIRY>:Determines how long PRF is valid • <POLICY-REF>:URL of policy • <INCLUDE>, <EXCLUDE>:URL prefixes (local) to which policy applies or doesn‘t apply • <COOKIE-INCLUDE>, <COOKIE-EXCLUDE>:Associates or disassociates cookies with policy • <METHOD>:Methods to which policy applies
Locating Policy Reference Files • There are three ways to locate a PRF: • Publish it in the well-known location, /w3c/p3p.xml • Send an HTTP header which gives the location of the policy reference file • Include a link to the policy reference file in the site's HTML • Well-known location is fastest for clients • HTML link is slowest for clients (must first fetch and parse the HTML page) • HTTP header falls in between these two
More on Locating Policy Reference Files • If possible, use just one reference file per site • Multiple are allowed, but this is harder to manage • Whenever possible, use the well-known location • But the entire host must be under a single organization • Use the HTTP header method if you control the site's configuration • Use HTML links only as a last resort • When you don't control the entire site, and can't change the server configuration
Using Compact Policies • Compact policy is sent in an HTTP header • Typically done by configuring server to send header • No policy reference file mechanism for CPs • To put different CPs on different parts of the site, server must send the appropriate CP • Compact policy applies to all cookies in the current response • Compact policy applies to that cookie for the life of the cookie
How Many Policies? • Most organizations will use a small number of policies (less than 5) • Using more than this quickly gets unmanageable • At a minimum, try to split your site into two: • Parts of the site which require personally identifiable information (PII) • Parts of the site which don't require PII • This must be distinguishable by URL or hostname
Policy Lifetime and Updates • Policy in effect when the data is collected applies as long as you hold the data • Policy and reference file lifetime covers how long clients can cache the file • Doesn't use HTTP caching rules; lifetimes are built directly into policy and reference files • Strike a balance between cacheability and flexibility • Compact policy lifetime is the entire lifetime of the cookie • Don't use compact policies if using long-lived cookies!
Importance of Standards • Standard practices are the single biggest aid to P3P deployment • They also make privacy management easier in an organization • Standards to consider: • Company-wide privacy policy • Standardized opt-in/opt-out text and method • Acceptable data collection standards • Cookie naming and lifetime standards
Third-party Content • If your site uses third-party content, they will also need to deploy P3P • The content owner will need to do this; your sites can't give the policy for content from other hosts • Third-party cookies will be blocked by IE6 unless they have P3P compact policies • Third-party is based on hostnames • Any content imbedded within a page from a different domain is "third party" • Distinction made by IE, not part of P3P
Inside a P3P Policy • The really hard work • Description of the major parts of a P3P policy • How to avoid writing XML by hand
The Really Hard Work • Understanding your data collection and use practices • What data do you use? • What do you use it for? • Who else can see the data? • When a user opts in/out, what does this cover? • This is a business-process task, not a technical task • Involve business people in this step • Consider outside consulting assistance
P3P Vocabulary: <ENTITY> • Describes the organization collecting the data • Uses the P3P dataschema to structure description of collector • Required to include at least one way to contact the organization (phone, post, or e-mail)
P3P Vocabulary: <DISPUTES> • Used to list dispute-resolution mechanisms available to visitors • In the event user thinks the policy has been violated • Can include: • Company's customer service department • Web privacy seals (TRUSTe, BBBOnline, etc.) • Relevant legislation, for regulated businesses
P3P Vocabulary: <ACCESS> • Describes what type of data the user will be able to access (and possibly update) in the future • Does not indicate how the user will do this • The site's human-readable privacy policy must explain how the user can access their information • P3P does not include a mechanism to automate data access or update
P3P Vocabulary: <STATEMENT> • Used to group information about types of data • Same practices apply to all data listed in the group
P3P Vocabulary: <PURPOSE> • Indicates what the site will do with the information • Includes information about user options • Purposes include attribute required (always, opt-in, or opt-out) • P3P purposes: <current/> <admin/> <develop/> <tailoring/> <pseudo-analysis/> <pseudo-decision/> <individual-analysis/> <individual-decision/> <contact/> <historical/> <telemarketing/> <other-purpose/>
P3P Vocabulary: <RECIPIENT> • Indicates who will receive the information • Includes information about user options • Recipients include attribute required (always, opt-in, or opt-out) • P3P recipients: <ours> <delivery> <same> <other-recipient> <unrelated> <public>
P3P Vocabulary: <RETENTION> • Indicates how long the site will keep the information • Described in general terms only, not specific amounts of time • Human-readable policy is required to explain policy for starred values • P3P retention values: <no-retention/> <stated-purpose/> * <legal-requirement/> * <business-practices/> * <indefinitely/>
P3P Vocabulary: <DATA> • Lists the data collected by the site under these practices • Uses data elements (or categories) from the base dataschema or a custom schema in the policy • Almost all base data elements have an assigned category • Sites can describe the data they collect using either specific data elements, or simply by categories of data
P3P Vocabulary:<CATEGORIES> • <physical>: Physical contact information • <online>: Online contact information • <uniqueid>: Unique identifiers • <purchase>: Purchase information • <financial>: Financial information • <computer>: Computer information • <navigation>: Navigation and click-stream data • <interactive>: Interactive data • <demographic>: Demographic and socioeconomic data • <content>: Content • <state>: State management mechanisms • <political>: Political information • <health>: Health information • <preference>: Preference data • <government>: Government-issued identifiers • <other-category>: other
P3P Vocabulary: <TEST> • Used to indicate policy is for testing purposes • Can be used to verify that the site deployment was done correctly • Clients will ignore policies that include this element
Creating a Reference File • If one policy covers the entire site, this is trivial • Examine the server's configuration • Look for directory trees where server-side executables are allowed or used • Map these to the correct policy • Map "everything else" to a default policy • Reference files are processed top to bottom • Place most specific entries first, most general last
Do I have To Write All That? • Yes and no... • You need to understand what will go into a P3P policy...but you don't have to write it in 'vi'. • Use a policy editor which will create the XML for you • No need to actually code the XML directly • Policy editor will also create the compact version for sites which are using compact policies • IBM & Microsoft have free policy editors: http://www.alphaworks.ibm.com/tech/p3peditor http://www.microsoft.com/privacy/wizard/
Deploying P3P on a Site • Publish policy file(s) and reference file • Add HTTP header giving location of reference file (if using HTTP header for this) • Add HTTP header containing compact policy (if using compact policies) • Can be combined with previous step • Add link tags to HTML with location of reference file (if using link tags) • Test deployment
Testing the Deployment • Use the W3C's P3P validator: • http://www.w3.org/P3P/validator • Test with Internet Explorer 6 • Most useful if your site is using third-party cookies • Also view the privacy summary, to see how IE renders your P3P policy
Deployment resources • P3P Editors: • http://www.alphaworks.ibm.com/tech/p3peditor • http://www.microsoft.com/privacy/wizard • P3P Deployment Guide: • http://www.w3.org/TR/p3pdeployment • P3P Validator: • http://www.w3.org/P3P/validator • P3P Toolbox: http://www.p3ptoolbox.org (Coming Soon!)
Acknowledgments • My thanks to Martin Pressler-Marshall of IBM for his assistance and contribution to this presentation
Conclusion • You should now understand what's involved in deploying P3P for your organization • Tackle it on your own if that's appropriate • Contact Josh Freed <jfreed@neted.org> for any questions or information about implementation assistance • Any questions?
Example Privacy Policy • At CatalogExample, we care about your privacy. When you come to our site to look for an item, we will only use this information to improve our site and will not store it in an identifiable way. • CatalogExample is a licensee of the PrivacySealExample Program. … • Questions regarding this statement should be directed to: CatalogExample 1-248-392-6753 • When you browse through our site we collect: • The basic information about your computer and connection to make sure that we can get you the proper information and for security purposes • Aggregate information on what pages consumers access or visit to improve our site • We purge the browsing information that we collect regularly
Example Privacy Policy in P3P <POLICY xmlns="http://www.w3.org/2000/12/P3Pv1" discuri="http://www.catalog.example.com/Privacy.html"> <ENTITY><DATA-GROUP><DATA ref="#business.name">CatalogExample</DATA> <DATA ref="#business.contact-info.telecom.telephonenum.intcode">1</DATA> <DATA ref="#business.contact-info.telecom.telephonenum.loccode"> 248</DATA> <DATA ref="#business.contact-info.telecom.telephonenum.number"> 3926753</DATA> </DATA-GROUP></ENTITY> <ACCESS><nonident/></ACCESS> <DISPUTES-GROUP> <DISPUTES resolution-type="independent" service="http://www.PrivacySeal.example.org" short-description="PrivacySeal.exampleorg" <REMEDIES><correct/></REMEDIES> <IMG src="http://www.PrivacySeal.example.org/Logo.gif"/> </DISPUTES></DISPUTES-GROUP> <STATEMENT> <PURPOSE><admin/><develop/></PURPOSE> <RECIPIENT><ours/></RECIPIENT> <RETENTION><stated-purpose/></RETENTION> <DATA-GROUP> <DATA ref="#dynamic.clickstream"/> <DATA ref="#dynamic.http"/> <DATA-GROUP> </STATEMENT> </POLICY>
Example Policy Reference File <META xmlns="http://www.w3.org/2000/P3Pv1"> <POLICY-REFERENCES> <EXPIRY max-age="172800" /> <!–- relative expiry: 2 days --> <POLICY-REF about="/P3P/Policy1.xml"> <INCLUDE>/*</INCLUDE> <EXCLUDE>/catalog/*</EXCLUDE> <EXCLUDE>/cgi-bin/*</EXCLUDE> <EXCLUDE>/servlet/*</EXCLUDE> </POLICY-REF> <POLICY-REF about="/P3P/Policy2.xml"> <INCLUDE>/catalog/*</INCLUDE> </POLICY-REF> <POLICY-REF about="/P3P/Policy3.xml"> <INCLUDE>/cgi-bin/*</INCLUDE> <INCLUDE>/servlet/*</INCLUDE> <EXCLUDE>/servlet/unknown</EXCLUDE> </POLICY-REF> </POLICY-REFERENCES> </META>
Joshua Freed <jfreed@neted.org> http://www.neted.org