Changeset 7279 for sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-main/page-about-security.php
- Timestamp:
- 06/06/2018 10:24:28 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-main/page-about-security.php
r7076 r7279 46 46 printf( 47 47 /* translators: %s: URL to English PDF */ 48 __( 'Learn more about WordPress core software security in this free white paper. You can also download it in <a href="%s">PDF format</a>.', 'wporg'),48 wp_kses_post( __( 'Learn more about WordPress core software security in this free white paper. You can also download it in <a href="%s">PDF format</a>.', 'wporg' ) ), 49 49 'https://github.com/WordPress/Security-White-Paper/blob/master/WordPressSecurityWhitePaper.pdf?raw=true' 50 50 ); … … 53 53 <img src="//s.w.org/about/images/logos/wordpress-logo-stacked-rgb.png" class="aligncenter" /> 54 54 55 <h2><?php _e( 'Overview', 'wporg' ); ?></h2>56 57 <p><?php _e( 'This document is an analysis and explanation of the WordPress core software development and its related security processes, as well as an examination of the inherent security built directly into the software. Decision makers evaluating WordPress as a content management system or web application framework should use this document in their analysis and decision-making, and for developers to refer to it to familiarize themselves with the security components and best practices of the software.', 'wporg' ); ?></p>58 59 <p><?php _e( 'The information in this document is up-to-date for the latest stable release of the software, WordPress 4.7 at time of publication, but should be considered relevant also to the most recent versions of the software as backwards compatibility is a strong focus for the WordPress development team. Specific security measures and changes will be noted as they have been added to the core software in specific releases. It is strongly encouraged to always be running the latest stable version of WordPress to ensure the most secure experience possible.', 'wporg' ); ?></p>60 <h2><?php _e( 'Executive Summary', 'wporg' ); ?></h2>55 <h2><?php esc_html_e( 'Overview', 'wporg' ); ?></h2> 56 57 <p><?php esc_html_e( 'This document is an analysis and explanation of the WordPress core software development and its related security processes, as well as an examination of the inherent security built directly into the software. Decision makers evaluating WordPress as a content management system or web application framework should use this document in their analysis and decision-making, and for developers to refer to it to familiarize themselves with the security components and best practices of the software.', 'wporg' ); ?></p> 58 59 <p><?php esc_html_e( 'The information in this document is up-to-date for the latest stable release of the software, WordPress 4.7 at time of publication, but should be considered relevant also to the most recent versions of the software as backwards compatibility is a strong focus for the WordPress development team. Specific security measures and changes will be noted as they have been added to the core software in specific releases. It is strongly encouraged to always be running the latest stable version of WordPress to ensure the most secure experience possible.', 'wporg' ); ?></p> 60 <h2><?php esc_html_e( 'Executive Summary', 'wporg' ); ?></h2> 61 61 <p><?php 62 62 printf( 63 63 /* translators: %s: WordPress Market share - 30. Note the following % sign is escaped as %%. */ 64 __( "WordPress is a dynamic open-source content management system which is used to power millions of websites, web applications, and blogs. It currently powers more than %s%% of the top 10 million websites on the Internet. WordPress' usability, extensibility, and mature development community make it a popular and secure choice for websites of all sizes.", 'wporg' ),64 esc_html__( 'WordPress is a dynamic open-source content management system which is used to power millions of websites, web applications, and blogs. It currently powers more than %s%% of the top 10 million websites on the Internet. WordPress’ usability, extensibility, and mature development community make it a popular and secure choice for websites of all sizes.', 'wporg' ), 65 65 WP_MARKET_SHARE 66 66 ); 67 67 ?></p> 68 68 69 <p><?php _e( 'Since its inception in 2003, WordPress has undergone continual hardening so its core software can address and mitigate common security threats, including the Top 10 list identified by The Open Web Application Security Project (OWASP) as common security vulnerabilities, which are discussed in this document.', 'wporg' ); ?></p>70 71 <p><?php _e( 'The WordPress Security Team, in collaboration with the WordPress Core Leadership Team and backed by the WordPress global community, works to identify and resolve security issues in the core software available for distribution and installation at WordPress.org, as well as recommending and documenting security best practices for third-party plugin and theme authors.', 'wporg' ); ?></p>72 73 <p><?php _e( 'Site developers and administrators should pay particular attention to the correct use of core APIs and underlying server configuration which have been the source of common vulnerabilities, as well as ensuring all users employ strong passwords to access WordPress.', 'wporg' ); ?></p>74 <h2><?php _e( 'An Overview of WordPress', 'wporg' ); ?></h2>69 <p><?php esc_html_e( 'Since its inception in 2003, WordPress has undergone continual hardening so its core software can address and mitigate common security threats, including the Top 10 list identified by The Open Web Application Security Project (OWASP) as common security vulnerabilities, which are discussed in this document.', 'wporg' ); ?></p> 70 71 <p><?php esc_html_e( 'The WordPress Security Team, in collaboration with the WordPress Core Leadership Team and backed by the WordPress global community, works to identify and resolve security issues in the core software available for distribution and installation at WordPress.org, as well as recommending and documenting security best practices for third-party plugin and theme authors.', 'wporg' ); ?></p> 72 73 <p><?php esc_html_e( 'Site developers and administrators should pay particular attention to the correct use of core APIs and underlying server configuration which have been the source of common vulnerabilities, as well as ensuring all users employ strong passwords to access WordPress.', 'wporg' ); ?></p> 74 <h2><?php esc_html_e( 'An Overview of WordPress', 'wporg' ); ?></h2> 75 75 <p><?php 76 76 printf( 77 77 /* translators: 1: WordPress Market share - 30. Note the following % sign is escaped as %%. 2: Footnote 3: Market Penetration - 60. Note the following % sign is escaped as %%. */ 78 __( 'WordPress is a free and open source content management system (CMS). It is the most widely-used CMS software in the world and it powers more than %1$s%% of the top 10 million websites%2$s, giving it an estimated %3$s%% market share of all sites78 esc_html__( 'WordPress is a free and open source content management system (CMS). It is the most widely-used CMS software in the world and it powers more than %1$s%% of the top 10 million websites%2$s, giving it an estimated %3$s%% market share of all sites 79 79 using a CMS.', 'wporg' ), 80 80 WP_MARKET_SHARE, … … 84 84 ?></p> 85 85 86 <p><?php _e( 'WordPress is licensed under the General Public License (GPLv2 or later) which provides four core freedoms, and can be considered as the WordPress "bill of rights":', 'wporg' ); ?></p>86 <p><?php esc_html_e( 'WordPress is licensed under the General Public License (GPLv2 or later) which provides four core freedoms, and can be considered as the WordPress “bill of rights”:', 'wporg' ); ?></p> 87 87 <ol> 88 <li><?php _e( 'The freedom to run the program, for any purpose.', 'wporg' ); ?></li>89 <li><?php _e( 'The freedom to study how the program works, and change it to make it do what you wish.', 'wporg' ); ?></li>90 <li><?php _e( 'The freedom to redistribute.', 'wporg' ); ?></li>91 <li><?php _e( 'The freedom to distribute copies of your modified versions to others.', 'wporg' ); ?></li>88 <li><?php esc_html_e( 'The freedom to run the program, for any purpose.', 'wporg' ); ?></li> 89 <li><?php esc_html_e( 'The freedom to study how the program works, and change it to make it do what you wish.', 'wporg' ); ?></li> 90 <li><?php esc_html_e( 'The freedom to redistribute.', 'wporg' ); ?></li> 91 <li><?php esc_html_e( 'The freedom to distribute copies of your modified versions to others.', 'wporg' ); ?></li> 92 92 </ol> 93 <h3><?php _e( 'The WordPress Core Leadership Team', 'wporg' ); ?></h3>94 <p><?php _e( 'The WordPress project is a meritocracy, run by a core leadership team, and led by its co-creator and lead developer, Matt Mullenweg. The team governs all aspects of the project, including core development, WordPress.org, and community initiatives.', 'wporg' ); ?></p>95 96 <p><?php _e( 'The Core Leadership Team consists of Matt Mullenweg, five lead developers, and more than a dozen core developers with permanent commit access. These developers have final authority on technical decisions, and lead architecture discussions and implementation efforts.', 'wporg' ); ?></p>97 98 <p><?php _e( 'WordPress has a number of contributing developers. Some of these are former or current committers, and some are likely future committers. These contributing developers are trusted and veteran contributors to WordPress who have earned a great deal of respect among their peers. As needed, WordPress also has guest committers, individuals who are granted commit access, sometimes for a specific component, on a temporary or trial basis.', 'wporg' ); ?></p>99 100 <p><?php _e( 'The core and contributing developers primarily guide WordPress development. Every version, hundreds of developers contribute code to WordPress. These core contributors are volunteers who contribute to the core codebase in some way.', 'wporg' ); ?></p>101 <h3><?php _e( 'The WordPress Release Cycle', 'wporg' ); ?></h3>102 <p><?php _e( 'Each WordPress release cycle is led by one or more of the core WordPress developers. A release cycle usually lasts around 4 months from the initial scoping meeting to launch of the version.', 'wporg' ); ?></p>93 <h3><?php esc_html_e( 'The WordPress Core Leadership Team', 'wporg' ); ?></h3> 94 <p><?php esc_html_e( 'The WordPress project is a meritocracy, run by a core leadership team, and led by its co-creator and lead developer, Matt Mullenweg. The team governs all aspects of the project, including core development, WordPress.org, and community initiatives.', 'wporg' ); ?></p> 95 96 <p><?php esc_html_e( 'The Core Leadership Team consists of Matt Mullenweg, five lead developers, and more than a dozen core developers with permanent commit access. These developers have final authority on technical decisions, and lead architecture discussions and implementation efforts.', 'wporg' ); ?></p> 97 98 <p><?php esc_html_e( 'WordPress has a number of contributing developers. Some of these are former or current committers, and some are likely future committers. These contributing developers are trusted and veteran contributors to WordPress who have earned a great deal of respect among their peers. As needed, WordPress also has guest committers, individuals who are granted commit access, sometimes for a specific component, on a temporary or trial basis.', 'wporg' ); ?></p> 99 100 <p><?php esc_html_e( 'The core and contributing developers primarily guide WordPress development. Every version, hundreds of developers contribute code to WordPress. These core contributors are volunteers who contribute to the core codebase in some way.', 'wporg' ); ?></p> 101 <h3><?php esc_html_e( 'The WordPress Release Cycle', 'wporg' ); ?></h3> 102 <p><?php esc_html_e( 'Each WordPress release cycle is led by one or more of the core WordPress developers. A release cycle usually lasts around 4 months from the initial scoping meeting to launch of the version.', 'wporg' ); ?></p> 103 103 104 104 <p><?php 105 105 printf( 106 106 /* translators: %s: Footnote*/ 107 __( 'A release cycle follows the following pattern%s:', 'wporg' ),107 esc_html__( 'A release cycle follows the following pattern%s:', 'wporg' ), 108 108 '<sup id="ref2"><a href="#footnote2">2</a></sup>' 109 109 ); 110 110 ?></p> 111 111 <ul> 112 <li><?php _e( 'Phase 1: Planning and securing team leads. This is done in the #core chat room on Slack. The release lead discusses features for the next release of WordPress. WordPress contributors get involved with that discussion. The release lead will identify team leads for each of the features.', 'wporg' ); ?></li>113 <li><?php _e( 'Phase 2: Development work begins. Team leads assemble teams and work on their assigned features. Regular chats are scheduled to ensure the development keeps moving forward.', 'wporg' ); ?></li>114 <li><?php _e( 'Phase 3: Beta. Betas are released, and beta-testers are asked to start reporting bugs. No more commits for new enhancements or feature requests are carried out from this phase on. Third-party plugin and theme authors are encouraged to test their code against the upcoming changes.', 'wporg' ); ?></li>115 <li><?php _e( 'Phase 4: Release Candidate. There is a string freeze for translatable strings from this point on. Work is targeted on regressions and blockers only.', 'wporg' ); ?></li>116 <li><?php _e( 'Phase 5: Launch. WordPress version is launched and made available in the WordPress Admin for updates.', 'wporg' ); ?></li>112 <li><?php esc_html_e( 'Phase 1: Planning and securing team leads. This is done in the #core chat room on Slack. The release lead discusses features for the next release of WordPress. WordPress contributors get involved with that discussion. The release lead will identify team leads for each of the features.', 'wporg' ); ?></li> 113 <li><?php esc_html_e( 'Phase 2: Development work begins. Team leads assemble teams and work on their assigned features. Regular chats are scheduled to ensure the development keeps moving forward.', 'wporg' ); ?></li> 114 <li><?php esc_html_e( 'Phase 3: Beta. Betas are released, and beta-testers are asked to start reporting bugs. No more commits for new enhancements or feature requests are carried out from this phase on. Third-party plugin and theme authors are encouraged to test their code against the upcoming changes.', 'wporg' ); ?></li> 115 <li><?php esc_html_e( 'Phase 4: Release Candidate. There is a string freeze for translatable strings from this point on. Work is targeted on regressions and blockers only.', 'wporg' ); ?></li> 116 <li><?php esc_html_e( 'Phase 5: Launch. WordPress version is launched and made available in the WordPress Admin for updates.', 'wporg' ); ?></li> 117 117 </ul> 118 <h3><?php _e( 'Version Numbering and Security Releases', 'wporg' ); ?></h3>119 <p><?php _e( "A major WordPress version is dictated by the first two sequences. For example, 3.5 is a major release, as is 3.6, 3.7, or 4.0. There isn't a “WordPress 3” or “WordPress 4” and each major release is referred to by its numbering, e.g., “WordPress 3.9.”", 'wporg' ); ?></p>120 121 <p><?php _e( "Major releases may add new user features and developer APIs. Though typically in the software world, a “major ” version means you can break backwards compatibility, WordPress strives to never break backwards compatibility. Backwards compatibility is one of the project's most important philosophies, with the aim of making updates much easier on users and developers alike.", 'wporg' ); ?></p>122 123 <p><?php 124 printf( 125 /* translators: %s: Footnote */ 126 __( 'A minor WordPress version is dictated by the third sequence. Version 3.5.1 is a minor release, as is 3.4.2%s. A minor release is reserved for fixing security vulnerabilities and addressing critical bugs only. Since new versions of WordPress are released so frequently — the aim is every 4-5 months for a major release, and minor releases happen as needed — there is only a need for major and minor releases.', 'wporg' ),118 <h3><?php esc_html_e( 'Version Numbering and Security Releases', 'wporg' ); ?></h3> 119 <p><?php esc_html_e( 'A major WordPress version is dictated by the first two sequences. For example, 3.5 is a major release, as is 3.6, 3.7, or 4.0. There isn’t a “WordPress 3” or “WordPress 4” and each major release is referred to by its numbering, e.g., “WordPress 3.9.”', 'wporg' ); ?></p> 120 121 <p><?php esc_html_e( 'Major releases may add new user features and developer APIs. Though typically in the software world, a “major” version means you can break backwards compatibility, WordPress strives to never break backwards compatibility. Backwards compatibility is one of the project’s most important philosophies, with the aim of making updates much easier on users and developers alike.', 'wporg' ); ?></p> 122 123 <p><?php 124 printf( 125 /* translators: %s: Footnote */ 126 esc_html__( 'A minor WordPress version is dictated by the third sequence. Version 3.5.1 is a minor release, as is 3.4.2%s. A minor release is reserved for fixing security vulnerabilities and addressing critical bugs only. Since new versions of WordPress are released so frequently — the aim is every 4-5 months for a major release, and minor releases happen as needed — there is only a need for major and minor releases.', 'wporg' ), 127 127 '<sup id="ref3"><a href="#footnote3">3</a></sup>' 128 128 ); 129 129 ?></p> 130 130 131 <h3><?php _e( 'Version Backwards Compatibility', 'wporg' ); ?></h3>132 <p><?php _e( 'The WordPress project has a strong commitment to backwards compatibility. This commitment means that themes, plugins, and custom code continues to function when WordPress core software is updated, encouraging site owners to keep their WordPress version updated to the latest secure release.', 'wporg' ); ?></p>133 <h2><?php _e( 'WordPress and Security', 'wporg' ); ?></h2>134 <h3><?php _e( 'The WordPress Security Team', 'wporg' ); ?></h3>131 <h3><?php esc_html_e( 'Version Backwards Compatibility', 'wporg' ); ?></h3> 132 <p><?php esc_html_e( 'The WordPress project has a strong commitment to backwards compatibility. This commitment means that themes, plugins, and custom code continues to function when WordPress core software is updated, encouraging site owners to keep their WordPress version updated to the latest secure release.', 'wporg' ); ?></p> 133 <h2><?php esc_html_e( 'WordPress and Security', 'wporg' ); ?></h2> 134 <h3><?php esc_html_e( 'The WordPress Security Team', 'wporg' ); ?></h3> 135 135 <p><?php 136 136 printf( 137 137 /* translators: 1: Number - 50; 2: Footnote*/ 138 __( 'The WordPress Security Team is made up of approximately %1$s experts including lead developers and security researchers — about half are employees of Automattic (makers of WordPress.com, the earliest and largest WordPress hosting platform on the web), and a number work in the web security field. The team consults with well-known and trusted security researchers and hosting companies%2$s.', 'wporg' ),138 esc_html__( 'The WordPress Security Team is made up of approximately %1$s experts including lead developers and security researchers — about half are employees of Automattic (makers of WordPress.com, the earliest and largest WordPress hosting platform on the web), and a number work in the web security field. The team consults with well-known and trusted security researchers and hosting companies%2$s.', 'wporg' ), 139 139 50, 140 140 '<sup><a href="#footnote3">3</a></sup>' … … 145 145 printf( 146 146 /* translators: %s: Footnote */ 147 __( 'The WordPress Security Team often collaborates with other security teams to address issues in common dependencies, such as resolving the vulnerability in the PHP XML parser, used by the XML-RPC API that ships with WordPress, in WordPress 3.9.2%s. This vulnerability resolution was a result of a joint effort by both WordPress and Drupal security teams.', 'wporg' ),147 esc_html__( 'The WordPress Security Team often collaborates with other security teams to address issues in common dependencies, such as resolving the vulnerability in the PHP XML parser, used by the XML-RPC API that ships with WordPress, in WordPress 3.9.2%s. This vulnerability resolution was a result of a joint effort by both WordPress and Drupal security teams.', 'wporg' ), 148 148 '<sup id="ref4"><a href="#footnote4">4</a></sup>' 149 149 ); 150 150 ?></p> 151 <h3><?php _e( 'WordPress Security Risks, Process, and History', 'wporg' ); ?></h3>151 <h3><?php esc_html_e( 'WordPress Security Risks, Process, and History', 'wporg' ); ?></h3> 152 152 <p><?php 153 153 printf( 154 154 /* translators: 1: HackerOne URL 2: Footnote */ 155 __( 'The WordPress Security Team believes in Responsible Disclosure by alerting the security team immediately of any potential vulnerabilities. Potential security vulnerabilities can be signaled to the Security Team via the <a href="%1$s">WordPress HackerOne</a>%2$s. The Security Team communicates amongst itself via a private Slack channel, and works on a walled-off, private Trac for tracking, testing, and fixing bugs and security problems.', 'wporg'),155 wp_kses_post( __( 'The WordPress Security Team believes in Responsible Disclosure by alerting the security team immediately of any potential vulnerabilities. Potential security vulnerabilities can be signaled to the Security Team via the <a href="%1$s">WordPress HackerOne</a>%2$s. The Security Team communicates amongst itself via a private Slack channel, and works on a walled-off, private Trac for tracking, testing, and fixing bugs and security problems.', 'wporg' ) ), 156 156 'https://hackerone.com/wordpress', 157 157 '<sup id="ref5"><a href="#footnote5">5</a></sup>' … … 159 159 ?></p> 160 160 161 <p><?php _e( 'Each security report is acknowledged upon receipt, and the team works to verify the vulnerability and determine its severity. If confirmed, the security team then plans for a patch to fix the problem which can be committed to an upcoming release of the WordPress software or it can be pushed as an immediate security release, depending on the severity of the issue.', 'wporg' ); ?></p>162 163 <p><?php 164 printf( 165 /* translators: %s: Footnote */ 166 __( 'For an immediate security release, an advisory is published by the Security Team to the WordPress.org News site%s announcing the release and detailing the changes. Credit for the responsible disclosure of a vulnerability is given in the advisory to encourage and reinforce continued responsible reporting in the future.', 'wporg' ),161 <p><?php esc_html_e( 'Each security report is acknowledged upon receipt, and the team works to verify the vulnerability and determine its severity. If confirmed, the security team then plans for a patch to fix the problem which can be committed to an upcoming release of the WordPress software or it can be pushed as an immediate security release, depending on the severity of the issue.', 'wporg' ); ?></p> 162 163 <p><?php 164 printf( 165 /* translators: %s: Footnote */ 166 esc_html__( 'For an immediate security release, an advisory is published by the Security Team to the WordPress.org News site%s announcing the release and detailing the changes. Credit for the responsible disclosure of a vulnerability is given in the advisory to encourage and reinforce continued responsible reporting in the future.', 'wporg' ), 167 167 '<sup id="ref6"><a href="#footnote6">6</a></sup>' 168 168 ); 169 169 ?></p> 170 170 171 <p><?php _e( 'Administrators of the WordPress software see a notification on their site dashboard to upgrade when a new release is available, and following the manual upgrade users are redirected to the About WordPress screen which details the changes. If administrators have automatic background updates enabled, they will receive an email after an upgrade has been completed.', 'wporg' ); ?></p>172 173 <h3><?php _e( 'Automatic Background Updates for Security Releases', 'wporg' ); ?></h3>174 <p><?php 175 printf( 176 /* translators: %s: Footnote */ 177 __( 'Starting with version 3.7, WordPress introduced automated background updates for all minor releases%s, such as 3.7.1 and 3.7.2. The WordPress Security Team can identify, fix, and push out automated security enhancements for WordPress without the site owner needing to do anything on their end, and the security update will install automatically.', 'wporg' ),171 <p><?php esc_html_e( 'Administrators of the WordPress software see a notification on their site dashboard to upgrade when a new release is available, and following the manual upgrade users are redirected to the About WordPress screen which details the changes. If administrators have automatic background updates enabled, they will receive an email after an upgrade has been completed.', 'wporg' ); ?></p> 172 173 <h3><?php esc_html_e( 'Automatic Background Updates for Security Releases', 'wporg' ); ?></h3> 174 <p><?php 175 printf( 176 /* translators: %s: Footnote */ 177 esc_html__( 'Starting with version 3.7, WordPress introduced automated background updates for all minor releases%s, such as 3.7.1 and 3.7.2. The WordPress Security Team can identify, fix, and push out automated security enhancements for WordPress without the site owner needing to do anything on their end, and the security update will install automatically.', 'wporg' ), 178 178 '<sup id="ref7"><a href="#footnote7">7</a></sup>' 179 179 ); 180 180 ?></p> 181 181 182 <p><?php _e( 'When a security update is pushed for the current stable release of WordPress, the core team will also push security updates for all the releases that are capable of background updates (since WordPress 3.7), so these older but still recent versions of WordPress will receive security enhancements.', 'wporg' ); ?></p>183 184 <p><?php _e( 'Individual site owners can opt to remove automatic background updates through a simple change in their configuration file, but keeping the functionality is strongly recommended by the core team, as well as running the latest stable release of WordPress.', 'wporg' ); ?></p>185 <h3><?php _e( '2013 OWASP Top 10', 'wporg' ); ?></h3>186 <p><?php 187 printf( 188 /* translators: %s: Footnote */ 189 __( 'The Open Web Application Security Project (OWASP) is an online community dedicated to web application security. The OWASP Top 10 list%s focuses on identifying the most serious application security risks for a broad array of organizations. The Top 10 items are selected and prioritized in combination with consensus estimates of exploitability, detectability, and impact estimates.', 'wporg' ),182 <p><?php esc_html_e( 'When a security update is pushed for the current stable release of WordPress, the core team will also push security updates for all the releases that are capable of background updates (since WordPress 3.7), so these older but still recent versions of WordPress will receive security enhancements.', 'wporg' ); ?></p> 183 184 <p><?php esc_html_e( 'Individual site owners can opt to remove automatic background updates through a simple change in their configuration file, but keeping the functionality is strongly recommended by the core team, as well as running the latest stable release of WordPress.', 'wporg' ); ?></p> 185 <h3><?php esc_html_e( '2013 OWASP Top 10', 'wporg' ); ?></h3> 186 <p><?php 187 printf( 188 /* translators: %s: Footnote */ 189 esc_html__( 'The Open Web Application Security Project (OWASP) is an online community dedicated to web application security. The OWASP Top 10 list%s focuses on identifying the most serious application security risks for a broad array of organizations. The Top 10 items are selected and prioritized in combination with consensus estimates of exploitability, detectability, and impact estimates.', 'wporg' ), 190 190 '<sup id="ref8"><a href="#footnote8">8</a></sup>' 191 191 ); 192 192 ?></p> 193 193 194 <p><?php _e( 'The following sections discuss the APIs, resources, and policies that WordPress uses to strengthen the core software and 3rd party plugins and themes against these potential risks.', 'wporg' ); ?></p>195 <h4><?php _e( 'A1 - Injection', 'wporg' ); ?></h4>196 <p><?php 197 printf( 198 /* translators: %s: Footnote */ 199 __( 'There is a set of functions and APIs available in WordPress to assist developers in making sure unauthorized code cannot be injected, and help them validate and sanitize data. Best practices and documentation are available%s on how to use these APIs to protect, validate, or sanitize input and output data in HTML, URLs, HTTP headers, and when interacting with the database and filesystem. Administrators can also further restrict the types of file which can be uploaded via filters.', 'wporg' ),194 <p><?php esc_html_e( 'The following sections discuss the APIs, resources, and policies that WordPress uses to strengthen the core software and 3rd party plugins and themes against these potential risks.', 'wporg' ); ?></p> 195 <h4><?php esc_html_e( 'A1 - Injection', 'wporg' ); ?></h4> 196 <p><?php 197 printf( 198 /* translators: %s: Footnote */ 199 esc_html__( 'There is a set of functions and APIs available in WordPress to assist developers in making sure unauthorized code cannot be injected, and help them validate and sanitize data. Best practices and documentation are available%s on how to use these APIs to protect, validate, or sanitize input and output data in HTML, URLs, HTTP headers, and when interacting with the database and filesystem. Administrators can also further restrict the types of file which can be uploaded via filters.', 'wporg' ), 200 200 '<sup id="ref9"><a href="#footnote9">9</a></sup>' 201 201 ); 202 202 ?></p> 203 <h4><?php _e( 'A2 - Broken Authentication and Session Management', 'wporg' ); ?></h4>204 <p><?php _e( 'WordPress core software manages user accounts and authentication and details such as the user ID, name, and password are managed on the server-side, as well as the authentication cookies. Passwords are protected in the database using standard salting and stretching techniques. Existing sessions are destroyed upon logout for versions of WordPress after 4.0.', 'wporg' ); ?></p>205 <h4><?php _e( 'A3 - Cross Site Scripting (XSS)', 'wporg' ); ?></h4>203 <h4><?php esc_html_e( 'A2 - Broken Authentication and Session Management', 'wporg' ); ?></h4> 204 <p><?php esc_html_e( 'WordPress core software manages user accounts and authentication and details such as the user ID, name, and password are managed on the server-side, as well as the authentication cookies. Passwords are protected in the database using standard salting and stretching techniques. Existing sessions are destroyed upon logout for versions of WordPress after 4.0.', 'wporg' ); ?></p> 205 <h4><?php esc_html_e( 'A3 - Cross Site Scripting (XSS)', 'wporg' ); ?></h4> 206 206 <p><?php 207 207 printf( 208 208 /* translators: 1: Footnote, 2: wp_kses() */ 209 __( 'WordPress provides a range of functions which can help ensure that user-supplied data is safe%1$s. Trusted users, that is administrators and editors on a single WordPress installation, and network administrators only in WordPress Multisite, can post unfiltered HTML or JavaScript as they need to, such as inside a post or page. Untrusted users and user-submitted content is filtered by default to remove dangerous entities, using the KSES library through the %2$s function.', 'wporg' ),209 esc_html__( 'WordPress provides a range of functions which can help ensure that user-supplied data is safe%1$s. Trusted users, that is administrators and editors on a single WordPress installation, and network administrators only in WordPress Multisite, can post unfiltered HTML or JavaScript as they need to, such as inside a post or page. Untrusted users and user-submitted content is filtered by default to remove dangerous entities, using the KSES library through the %2$s function.', 'wporg' ), 210 210 '<sup id="ref10"><a href="#footnote10">10</a></sup>', 211 211 '<code>wp_kses</code>' … … 216 216 printf( 217 217 /* translators: %s: the_search_query() */ 218 __( 'As an example, the WordPress core team noticed before the release of WordPress 2.3 that the function %s was being misused by most theme authors, who were not escaping the function’s output for use in HTML. In a very rare case of slightly breaking backward compatibility, the function’s output was changed in WordPress 2.3 to be pre-escaped.', 'wporg' ),218 esc_html__( 'As an example, the WordPress core team noticed before the release of WordPress 2.3 that the function %s was being misused by most theme authors, who were not escaping the function’s output for use in HTML. In a very rare case of slightly breaking backward compatibility, the function’s output was changed in WordPress 2.3 to be pre-escaped.', 'wporg' ), 219 219 '<code>the_search_query()</code>' 220 220 ); 221 221 ?></p> 222 <h4><?php _e( 'A4 - Insecure Direct Object Reference', 'wporg' ); ?></h4>223 <p><?php _e( "WordPress often provides direct object reference, such as unique numeric identifiers of user accounts or content available in the URL or form fields. While these identifiers disclose direct system information, WordPress' rich permissions and access control system prevent unauthorized requests.", 'wporg' ); ?></p>224 <h4><?php _e( 'A5 - Security Misconfiguration', 'wporg' ); ?></h4>225 <p><?php 226 printf( 227 /* translators: %s: Footnote */ 228 __( 'The majority of the WordPress security configuration operations are limited to a single authorized administrator. Default settings for WordPress are continually evaluated at the core team level, and the WordPress core team provides documentation and best practices to tighten security for server configuration for running a WordPress site%s.', 'wporg' ),222 <h4><?php esc_html_e( 'A4 - Insecure Direct Object Reference', 'wporg' ); ?></h4> 223 <p><?php esc_html_e( 'WordPress often provides direct object reference, such as unique numeric identifiers of user accounts or content available in the URL or form fields. While these identifiers disclose direct system information, WordPress’ rich permissions and access control system prevent unauthorized requests.', 'wporg' ); ?></p> 224 <h4><?php esc_html_e( 'A5 - Security Misconfiguration', 'wporg' ); ?></h4> 225 <p><?php 226 printf( 227 /* translators: %s: Footnote */ 228 esc_html__( 'The majority of the WordPress security configuration operations are limited to a single authorized administrator. Default settings for WordPress are continually evaluated at the core team level, and the WordPress core team provides documentation and best practices to tighten security for server configuration for running a WordPress site%s.', 'wporg' ), 229 229 '<sup id="ref11"><a href="#footnote11">11</a></sup>' 230 230 ); 231 231 ?></p> 232 <h4><?php _e( 'A6 - Sensitive Data Exposure', 'wporg' ); ?></h4>233 <p><?php 234 printf( 235 /* translators: %s: Footnote */ 236 __( "WordPress user account passwords are salted and hashed based on the Portable PHP Password Hashing Framework%s. WordPress' permission system is used to control access to private information such an registered users' PII, commenters' email addresses, privately published content, etc. In WordPress 3.7, a password strength meter was included in the core software providing additional information to users setting their passwords and hints on increasing strength. WordPress also has an optional configuration setting for requiring HTTPS.", 'wporg' ),232 <h4><?php esc_html_e( 'A6 - Sensitive Data Exposure', 'wporg' ); ?></h4> 233 <p><?php 234 printf( 235 /* translators: %s: Footnote */ 236 esc_html__( 'WordPress user account passwords are salted and hashed based on the Portable PHP Password Hashing Framework%s. WordPress’ permission system is used to control access to private information such an registered users’ PII, commenters’ email addresses, privately published content, etc. In WordPress 3.7, a password strength meter was included in the core software providing additional information to users setting their passwords and hints on increasing strength. WordPress also has an optional configuration setting for requiring HTTPS.', 'wporg' ), 237 237 '<sup id="ref12"><a href="#footnote12">12</a></sup>' 238 238 ); 239 239 ?></p> 240 240 241 <h4><?php _e( 'A7 - Missing Function Level Access Control', 'wporg' ); ?></h4>242 <p><?php _e( 'WordPress checks for proper authorization and permissions for any function level access requests prior to the action being executed. Access or visualization of administrative URLs, menus, and pages without proper authentication is tightly integrated with the authentication system to prevent access from unauthorized users.', 'wporg' ); ?></p>243 244 <h4><?php _e( 'A8 - Cross Site Request Forgery (CSRF)', 'wporg' ); ?></h4>245 <p><?php 246 printf( 247 /* translators: %s: Footnote */ 248 __( 'WordPress uses cryptographic tokens, called nonces%s, to validate intent of action requests from authorized users to protect against potential CSRF threats. WordPress provides an API for the generation of these tokens to create and verify unique and temporary tokens, and the token is limited to a specific user, a specific action, a specific object, and a specific time period, which can be added to forms and URLs as needed. Additionally, all nonces are invalidated upon logout.', 'wporg' ),241 <h4><?php esc_html_e( 'A7 - Missing Function Level Access Control', 'wporg' ); ?></h4> 242 <p><?php esc_html_e( 'WordPress checks for proper authorization and permissions for any function level access requests prior to the action being executed. Access or visualization of administrative URLs, menus, and pages without proper authentication is tightly integrated with the authentication system to prevent access from unauthorized users.', 'wporg' ); ?></p> 243 244 <h4><?php esc_html_e( 'A8 - Cross Site Request Forgery (CSRF)', 'wporg' ); ?></h4> 245 <p><?php 246 printf( 247 /* translators: %s: Footnote */ 248 esc_html__( 'WordPress uses cryptographic tokens, called nonces%s, to validate intent of action requests from authorized users to protect against potential CSRF threats. WordPress provides an API for the generation of these tokens to create and verify unique and temporary tokens, and the token is limited to a specific user, a specific action, a specific object, and a specific time period, which can be added to forms and URLs as needed. Additionally, all nonces are invalidated upon logout.', 'wporg' ), 249 249 '<sup id="ref13"><a href="#footnote13">13</a></sup>' 250 250 ); 251 251 ?></p> 252 252 253 <h4><?php _e( 'A9 - Using Components with Known Vulnerabilities', 'wporg' ); ?></h4>254 <p><?php 255 printf( 256 /* translators: %s: Footnote */ 257 __( 'The WordPress core team closely monitors the few included libraries and frameworks WordPress integrates with for core functionality. In the past the core team has made contributions to several third-party components to make them more secure, such as the update to fix a cross-site vulnerability in TinyMCE in WordPress 3.5.2%s.', 'wporg' ),253 <h4><?php esc_html_e( 'A9 - Using Components with Known Vulnerabilities', 'wporg' ); ?></h4> 254 <p><?php 255 printf( 256 /* translators: %s: Footnote */ 257 esc_html__( 'The WordPress core team closely monitors the few included libraries and frameworks WordPress integrates with for core functionality. In the past the core team has made contributions to several third-party components to make them more secure, such as the update to fix a cross-site vulnerability in TinyMCE in WordPress 3.5.2%s.', 'wporg' ), 258 258 '<sup id="ref14"><a href="#footnote14">14</a></sup>' 259 259 ); … … 263 263 printf( 264 264 /* translators: %s: Footnote */ 265 __( 'If necessary, the core team may decide to fork or replace critical external components, such as when the SWFUpload library was officially replaced by the Plupload library in 3.5.2, and a secure fork of SWFUpload was made available by the security team<%s for those plugins who continued to use SWFUpload in the short-term.', 'wporg' ),266 ' sup id="ref15"><a href="#footnote15">15</a></sup>'267 ); 268 ?></p> 269 270 <h4><?php _e( 'A10 - Unvalidated Redirects and Forwards', 'wporg' ); ?></h4>271 <p><?php 272 printf( 273 /* translators: %s: Footnote */ 274 __( "WordPress' internal access control and authentication system will protect against attempts to direct users to unwanted destinations or automatic redirects. This functionality is also made available to plugin developers via an API, <code>wp_safe_redirect()</code>%s.", 'wporg'),265 esc_html__( 'If necessary, the core team may decide to fork or replace critical external components, such as when the SWFUpload library was officially replaced by the Plupload library in 3.5.2, and a secure fork of SWFUpload was made available by the security team<%s for those plugins who continued to use SWFUpload in the short-term.', 'wporg' ), 266 '<sup id="ref15"><a href="#footnote15">15</a></sup>' 267 ); 268 ?></p> 269 270 <h4><?php esc_html_e( 'A10 - Unvalidated Redirects and Forwards', 'wporg' ); ?></h4> 271 <p><?php 272 printf( 273 /* translators: %s: Footnote */ 274 wp_kses_post( __( 'WordPress’ internal access control and authentication system will protect against attempts to direct users to unwanted destinations or automatic redirects. This functionality is also made available to plugin developers via an API, <code>wp_safe_redirect()</code>%s.', 'wporg' ) ), 275 275 '<sup id="ref16"><a href="#footnote16">16</a></sup>' 276 276 ); 277 277 ?></p> 278 <h3><?php _e( 'Further Security Risks and Concerns', 'wporg' ); ?></h3>279 <h4><?php _e( 'XXE (XML eXternal Entity) processing attacks', 'wporg' ); ?></h4>280 <p><?php _e( "When processing XML, WordPress disables the loading of custom XML entities to prevent both External Entity and Entity Expansion attacks. Beyond PHP's core functionality, WordPress does not provide additional secure XML processing API for plugin authors.", 'wporg' ); ?></p>281 <h4><?php _e( 'SSRF (Server Side Request Forgery) Attacks', 'wporg' ); ?></h4>282 <p><?php _e( 'HTTP requests issued by WordPress are filtered to prevent access to loopback and private IP addresses. Additionally, access is only allowed to certain standard HTTP ports.', 'wporg' ); ?></p>283 <h2><?php _e( 'WordPress Plugin and Theme Security', 'wporg' ); ?></h2>284 <h3><?php _e( 'The Default Theme', 'wporg' ); ?></h3>278 <h3><?php esc_html_e( 'Further Security Risks and Concerns', 'wporg' ); ?></h3> 279 <h4><?php esc_html_e( 'XXE (XML eXternal Entity) processing attacks', 'wporg' ); ?></h4> 280 <p><?php esc_html_e( 'When processing XML, WordPress disables the loading of custom XML entities to prevent both External Entity and Entity Expansion attacks. Beyond PHP’s core functionality, WordPress does not provide additional secure XML processing API for plugin authors.', 'wporg' ); ?></p> 281 <h4><?php esc_html_e( 'SSRF (Server Side Request Forgery) Attacks', 'wporg' ); ?></h4> 282 <p><?php esc_html_e( 'HTTP requests issued by WordPress are filtered to prevent access to loopback and private IP addresses. Additionally, access is only allowed to certain standard HTTP ports.', 'wporg' ); ?></p> 283 <h2><?php esc_html_e( 'WordPress Plugin and Theme Security', 'wporg' ); ?></h2> 284 <h3><?php esc_html_e( 'The Default Theme', 'wporg' ); ?></h3> 285 285 <p><?php 286 286 printf( 287 287 /* translators: %s: The latest Core Theme release - Currently Twenty Seventeen */ 288 __( 'WordPress requires a theme to be enabled to render content visible on the frontend. The default theme which ships with core WordPress (currently "%s") has been vigorously reviewed and tested for security reasons by both the team of theme developers plus the core development team.', 'wporg' ),288 esc_html__( 'WordPress requires a theme to be enabled to render content visible on the frontend. The default theme which ships with core WordPress (currently "%s") has been vigorously reviewed and tested for security reasons by both the team of theme developers plus the core development team.', 'wporg' ), 289 289 wp_get_theme( 'core/' . WP_CORE_DEFAULT_THEME )->display( 'Name' ) 290 290 ); 291 291 ?></p> 292 292 293 <p><?php _e( 'The default theme can serve as a starting point for custom theme development, and site developers can create a child theme which includes some customization but falls back on the default theme for most functionality and security. The default theme can be easily removed by an administrator if not needed.', 'wporg' ); ?></p>294 295 <h3><?php _e( 'WordPress.org Theme and Plugin Repositories', 'wporg' ); ?></h3>293 <p><?php esc_html_e( 'The default theme can serve as a starting point for custom theme development, and site developers can create a child theme which includes some customization but falls back on the default theme for most functionality and security. The default theme can be easily removed by an administrator if not needed.', 'wporg' ); ?></p> 294 295 <h3><?php esc_html_e( 'WordPress.org Theme and Plugin Repositories', 'wporg' ); ?></h3> 296 296 297 297 <p><?php 298 298 printf( 299 299 /* translators: 1: Number of plugins - 50,000; 2: Number of themes - 5,000 */ 300 __( 'There are approximately %1$s+ plugins and %2$s+ themes listed on the WordPress.org site. These themes and plugins are submitted for inclusion and are manually reviewed by volunteers before making them available on the repository.', 'wporg'300 esc_html__( 'There are approximately %1$s+ plugins and %2$s+ themes listed on the WordPress.org site. These themes and plugins are submitted for inclusion and are manually reviewed by volunteers before making them available on the repository.', 'wporg' 301 301 ), 302 302 number_format_i18n( 50000 ), … … 308 308 printf( 309 309 /* translators: 1: Footnote; 2: Footnote */ 310 __( 'Inclusion of plugins and themes in the repository is not a guarantee that they are free from security vulnerabilities. Guidelines are provided for plugin authors to consult prior to submission for inclusion in the repository%1$s, and extensive documentation about how to do WordPress theme development%2$s is provided on the WordPress.org site.', 'wporg' ),310 esc_html__( 'Inclusion of plugins and themes in the repository is not a guarantee that they are free from security vulnerabilities. Guidelines are provided for plugin authors to consult prior to submission for inclusion in the repository%1$s, and extensive documentation about how to do WordPress theme development%2$s is provided on the WordPress.org site.', 'wporg' ), 311 311 '<sup id="ref17"><a href="#footnote17">17</a></sup>', 312 312 '<sup id="ref18"><a href="#footnote18">18</a></sup>' … … 314 314 ?></p> 315 315 316 <p><?php _e( 'Each plugin and theme has the ability to be continually developed by the plugin or theme owner, and any subsequent fixes or feature development can be uploaded to the repository and made available to users with that plugin or theme installed with a description of that change. Site administrators are notified of plugins which need to be updated via their administration dashboard.', 'wporg' ); ?></p>317 318 <p><?php _e( 'When a plugin vulnerability is discovered by the WordPress Security Team, they contact the plugin author and work together to fix and release a secure version of the plugin. If there is a lack of response from the plugin author or if the vulnerability is severe, the plugin/theme is pulled from the public directory, and in some cases, fixed and updated directly by the Security Team.', 'wporg' ); ?></p>319 <h3><?php _e( 'The Theme Review Team', 'wporg' ); ?></h3>316 <p><?php esc_html_e( 'Each plugin and theme has the ability to be continually developed by the plugin or theme owner, and any subsequent fixes or feature development can be uploaded to the repository and made available to users with that plugin or theme installed with a description of that change. Site administrators are notified of plugins which need to be updated via their administration dashboard.', 'wporg' ); ?></p> 317 318 <p><?php esc_html_e( 'When a plugin vulnerability is discovered by the WordPress Security Team, they contact the plugin author and work together to fix and release a secure version of the plugin. If there is a lack of response from the plugin author or if the vulnerability is severe, the plugin/theme is pulled from the public directory, and in some cases, fixed and updated directly by the Security Team.', 'wporg' ); ?></p> 319 <h3><?php esc_html_e( 'The Theme Review Team', 'wporg' ); ?></h3> 320 320 <p><?php 321 321 printf( 322 322 /* translators: 1: Footnote; 2: Footnote; 3: Footnote */ 323 __( 'The Theme Review Team is a group of volunteers, led by key and established members of the WordPress community, who review and approve themes submitted to be included in the official WordPress Theme directory. The Theme Review Team maintains the official Theme Review Guidelines%1$s, the Theme Unit Test Datas%2$s, and the Theme Check Plugins%3$s, and attempts to engage and educate the WordPress Theme developer community regarding development best practices. Inclusion in the group is moderated by core committers of the WordPress development team.', 'wporg' ),323 esc_html__( 'The Theme Review Team is a group of volunteers, led by key and established members of the WordPress community, who review and approve themes submitted to be included in the official WordPress Theme directory. The Theme Review Team maintains the official Theme Review Guidelines%1$s, the Theme Unit Test Datas%2$s, and the Theme Check Plugins%3$s, and attempts to engage and educate the WordPress Theme developer community regarding development best practices. Inclusion in the group is moderated by core committers of the WordPress development team.', 'wporg' ), 324 324 '<sup id="ref19"><a href="#footnote19">19</a></sup>', 325 325 '<sup id="ref20"><a href="#footnote20">20</a></sup>', … … 327 327 ); 328 328 ?></p> 329 <h2><?php _e( 'The Role of the Hosting Provider in WordPress Security', 'wporg' ); ?></h2>330 <p><?php _e( 'WordPress can be installed on a multitude of platforms. Though WordPress core software provides many provisions for operating a secure web application, which were covered in this document, the configuration of the operating system and the underlying web server hosting the software is equally important to keep the WordPress applications secure.', 'wporg' ); ?></p>331 <h3><?php _e( 'A Note about WordPress.com and WordPress security', 'wporg' ); ?></h3>332 <p><?php 333 printf( 334 /* translators: %s: Footnote */ 335 __( 'WordPress.com is the largest WordPress installation in the world, and is owned and managed by Automattic, Inc., which was founded by Matt Mullenweg, the WordPress project co-creator. WordPress.com runs on the core WordPress software, and has its own security processes, risks, and solutions%s. This document refers to security regarding the self-hosted, downloadable open source WordPress software available from WordPress.org and installable on any server in the world.', 'wporg' ),329 <h2><?php esc_html_e( 'The Role of the Hosting Provider in WordPress Security', 'wporg' ); ?></h2> 330 <p><?php esc_html_e( 'WordPress can be installed on a multitude of platforms. Though WordPress core software provides many provisions for operating a secure web application, which were covered in this document, the configuration of the operating system and the underlying web server hosting the software is equally important to keep the WordPress applications secure.', 'wporg' ); ?></p> 331 <h3><?php esc_html_e( 'A Note about WordPress.com and WordPress security', 'wporg' ); ?></h3> 332 <p><?php 333 printf( 334 /* translators: %s: Footnote */ 335 esc_html__( 'WordPress.com is the largest WordPress installation in the world, and is owned and managed by Automattic, Inc., which was founded by Matt Mullenweg, the WordPress project co-creator. WordPress.com runs on the core WordPress software, and has its own security processes, risks, and solutions%s. This document refers to security regarding the self-hosted, downloadable open source WordPress software available from WordPress.org and installable on any server in the world.', 'wporg' ), 336 336 '<sup id="ref22"><a href="#footnote22">22</a></sup>' 337 337 ); 338 338 ?></p> 339 <h2><?php _e( 'Appendix', 'wporg' ); ?></h2>340 <h3><?php _e( 'Core WordPress APIs', 'wporg' ); ?></h3>341 <p><?php 342 printf( 343 /* translators: %s: Footnote */ 344 __( 'The WordPress Core Application Programming Interface (API) is comprised of several individual APIs%s, each one covering the functions involved in, and use of, a given set of functionality. Together, these form the project interface which allows plugins and themes to interact with, alter, and extend WordPress core functionality safely and securely.', 'wporg' ),339 <h2><?php esc_html_e( 'Appendix', 'wporg' ); ?></h2> 340 <h3><?php esc_html_e( 'Core WordPress APIs', 'wporg' ); ?></h3> 341 <p><?php 342 printf( 343 /* translators: %s: Footnote */ 344 esc_html__( 'The WordPress Core Application Programming Interface (API) is comprised of several individual APIs%s, each one covering the functions involved in, and use of, a given set of functionality. Together, these form the project interface which allows plugins and themes to interact with, alter, and extend WordPress core functionality safely and securely.', 'wporg' ), 345 345 '<sup id="ref23"><a href="#footnote23">23</a></sup>' 346 346 ); 347 347 ?></p> 348 348 349 <p><?php _e( 'While each WordPress API provides best practices and standardized ways to interact with and extend WordPress core software, the following WordPress APIs are the most pertinent to enforcing and hardening WordPress security:', 'wporg' ); ?></p>350 351 <h3><?php _e( 'Database API', 'wporg' ); ?></h3>352 353 <p><?php 354 printf( 355 /* translators: %s: Footnote */ 356 __( 'The Database API%s, added in WordPress 0.71, provides the correct method for accessing data as named values which are stored in the database layer.', 'wporg' ),349 <p><?php esc_html_e( 'While each WordPress API provides best practices and standardized ways to interact with and extend WordPress core software, the following WordPress APIs are the most pertinent to enforcing and hardening WordPress security:', 'wporg' ); ?></p> 350 351 <h3><?php esc_html_e( 'Database API', 'wporg' ); ?></h3> 352 353 <p><?php 354 printf( 355 /* translators: %s: Footnote */ 356 esc_html__( 'The Database API%s, added in WordPress 0.71, provides the correct method for accessing data as named values which are stored in the database layer.', 'wporg' ), 357 357 '<sup id="ref24"><a href="#footnote24">24</a></sup>' 358 358 ); 359 359 ?></p> 360 360 361 <h3><?php _e( 'Filesystem API', 'wporg' ); ?></h3>361 <h3><?php esc_html_e( 'Filesystem API', 'wporg' ); ?></h3> 362 362 363 363 <p><?php 364 364 printf( 365 365 /* translators: 1: Footnote; 2: Footnote */ 366 __( 'The Filesystem API%1$s, added in WordPress 2.6%2$s, was originally created for WordPress‘ own automatic updates feature. The Filesystem API abstracts out the functionality needed for reading and writing local files to the filesystem to be done securely, on a variety of host types.', 'wporg' ),366 esc_html__( 'The Filesystem API%1$s, added in WordPress 2.6%2$s, was originally created for WordPress’ own automatic updates feature. The Filesystem API abstracts out the functionality needed for reading and writing local files to the filesystem to be done securely, on a variety of host types.', 'wporg' ), 367 367 '<sup id="ref25"><a href="#footnote25">25</a></sup>', 368 368 '<sup id="ref26"><a href="#footnote26">26</a></sup>' … … 370 370 ?></p> 371 371 372 <p><?php _e( 'It does this through the <code>WP_Filesystem_Base</code> class, and several subclasses which implement different ways of connecting to the local filesystem, depending on individual host support. Any theme or plugin that needs to write files locally should do so using the WP_Filesystem family of classes.', 'wporg'); ?></p>373 374 <h3><?php _e( 'HTTP API', 'wporg' ); ?></h3>372 <p><?php echo wp_kses_post( __( 'It does this through the <code>WP_Filesystem_Base</code> class, and several subclasses which implement different ways of connecting to the local filesystem, depending on individual host support. Any theme or plugin that needs to write files locally should do so using the WP_Filesystem family of classes.', 'wporg' ) ); ?></p> 373 374 <h3><?php esc_html_e( 'HTTP API', 'wporg' ); ?></h3> 375 375 376 376 <p><?php 377 377 printf( 378 378 /* translators: 1: Footnote; 2: Footnote */ 379 __( 'The HTTP API%1$s, added in WordPress 2.7%2$s and extended further in WordPress 2.8, standardizes the HTTP requests for WordPress. The API handles cookies, gzip encoding and decoding, chunk decoding (if HTTP 1.1), and various other HTTP protocol implementations. The API standardizes requests, tests each method prior to sending, and, based on your server configuration, uses the appropriate method to make the request.', 'wporg' ),379 esc_html__( 'The HTTP API%1$s, added in WordPress 2.7%2$s and extended further in WordPress 2.8, standardizes the HTTP requests for WordPress. The API handles cookies, gzip encoding and decoding, chunk decoding (if HTTP 1.1), and various other HTTP protocol implementations. The API standardizes requests, tests each method prior to sending, and, based on your server configuration, uses the appropriate method to make the request.', 'wporg' ), 380 380 '<sup id="ref27"><a href="#footnote27">27</a></sup>', 381 381 '<sup id="ref28"><a href="#footnote28">28</a></sup>' … … 383 383 ?></p> 384 384 385 <h3><?php _e( 'Permissions and current user API', 'wporg' ); ?></h3>386 387 <p><?php 388 printf( 389 /* translators: %s: Footnote */ 390 __( "The permissions and current user API%s is a set of functions which will help verify the current user's permissions and authority to perform any task or operation being requested, and can protect further against unauthorized users accessing or performing functions beyond their permitted capabilities.", 'wporg' ),385 <h3><?php esc_html_e( 'Permissions and current user API', 'wporg' ); ?></h3> 386 387 <p><?php 388 printf( 389 /* translators: %s: Footnote */ 390 esc_html__( 'The permissions and current user API%s is a set of functions which will help verify the current user’s permissions and authority to perform any task or operation being requested, and can protect further against unauthorized users accessing or performing functions beyond their permitted capabilities.', 'wporg' ), 391 391 '<sup id="ref29"><a href="#footnote29">29</a></sup>' 392 392 ); 393 393 ?></p> 394 <h3><?php _e( 'White paper content License', 'wporg' ); ?></h3>394 <h3><?php esc_html_e( 'White paper content License', 'wporg' ); ?></h3> 395 395 <p><?php 396 396 printf( 397 397 /* translators: 1: Link to WordPress Foundation Trademark Polocy (English); 2: Link to Creative Commons CC0 license (English) */ 398 __( 'The text in this document (not including the WordPress logo or <a href="%1$s">trademark</a>) is licensed under <a href="%2$s">CC0 1.0 Universal (CC0 1.0) Public Domain Dedication</a>. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.', 'wporg'),398 wp_kses_post( __( 'The text in this document (not including the WordPress logo or <a href="%1$s">trademark</a>) is licensed under <a href="%2$s">CC0 1.0 Universal (CC0 1.0) Public Domain Dedication</a>. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.', 'wporg' ) ), 399 399 'http://wordpressfoundation.org/trademark-policy/', 400 400 'https://creativecommons.org/publicdomain/zero/1.0/' … … 405 405 printf( 406 406 /* translators: %s: Link to the Drupal Security Whitepaper (english). */ 407 __( "<em>A special thank you to Drupal's </em><a href='%s'><em>security white paper</em></a><em>, which provided some inspiration. </em>", 'wporg'),407 wp_kses_post( __( '<em>A special thank you to Drupal’s </em><a href="%s"><em>security white paper</em></a><em>, which provided some inspiration. </em>', 'wporg' ) ), 408 408 'http://drupalsecurityreport.org/' 409 409 ); 410 410 ?></p> 411 <h3><?php _e( 'Additional Reading', 'wporg' ); ?></h3>411 <h3><?php esc_html_e( 'Additional Reading', 'wporg' ); ?></h3> 412 412 <ul> 413 413 <li><?php 414 414 printf( 415 415 /* translators: %s: Link to News Blog including the <a> tags. */ 416 __( 'WordPress News %s', 'wporg' ),416 esc_html__( 'WordPress News %s', 'wporg' ), 417 417 '<a href="https://wordpress.org/news/">https://wordpress.org/news/</a>' 418 418 ); … … 421 421 printf( 422 422 /* translators: %s: Link to News Blog Security Release Archive including the <a> tags. */ 423 __( 'WordPress Security releases %s', 'wporg' ),423 esc_html__( 'WordPress Security releases %s', 'wporg' ), 424 424 '<a href="https://wordpress.org/news/category/security/">https://wordpress.org/news/category/security/</a>' 425 425 ); … … 428 428 printf( 429 429 /* translators: %s: Link to Developer.WordPress.org including the <a> tags. */ 430 __( 'WordPress Developer Resources %s', 'wporg' ),430 esc_html__( 'WordPress Developer Resources %s', 'wporg' ), 431 431 '<a href="https://developer.wordpress.org/">https://developer.wordpress.org/</a>' 432 432 ); … … 436 436 <hr /> 437 437 438 <p><?php _e( '<em>Authored by</em> Sara Rosso', 'wporg'); ?></p>439 440 <p><?php _e( '<em>Contributions from</em> Barry Abrahamson, Michael Adams, Jon Cave, Helen Hou-Sandí, Dion Hulse, Mo Jangda, Paul Maiorana', 'wporg'); ?></p>441 442 <p><?php _e( '<em>Version 1.0 March 2015</em>', 'wporg'); ?></p>438 <p><?php echo wp_kses_post( __( '<em>Authored by</em> Sara Rosso', 'wporg' ) ); ?></p> 439 440 <p><?php echo wp_kses_post( __( '<em>Contributions from</em> Barry Abrahamson, Michael Adams, Jon Cave, Helen Hou-Sandí, Dion Hulse, Mo Jangda, Paul Maiorana', 'wporg' ) ); ?></p> 441 442 <p><?php echo wp_kses_post( __( '<em>Version 1.0 March 2015</em>', 'wporg' ) ); ?></p> 443 443 444 444 <hr /> 445 445 446 <h3><?php _e( 'Footnotes', 'wporg' ); ?></h3>446 <h3><?php esc_html_e( 'Footnotes', 'wporg' ); ?></h3> 447 447 <ul> 448 448 <li id='footnote1'><a href="#ref1">[1]</a> <a href="https://w3techs.com/">https://w3techs.com/</a>, as of March 2017</li>
Note: See TracChangeset
for help on using the changeset viewer.