Security for Web Developers Using JavaScript HTML and CSS Early Release Raw Unedited John Paul Mueller - Quickly download the ebook to read anytime, anywhere
Security for Web Developers Using JavaScript HTML and CSS Early Release Raw Unedited John Paul Mueller - Quickly download the ebook to read anytime, anywhere
com
https://ebookname.com/product/security-for-web-developers-
using-javascript-html-and-css-early-release-raw-unedited-
john-paul-mueller/
OR CLICK HERE
DOWLOAD EBOOK
https://ebookname.com/product/start-programming-using-html-css-
and-javascript-1st-edition-iztok-fajfar-author/
https://ebookname.com/product/mining-ebay-web-services-john-paul-
mueller/
https://ebookname.com/product/html-your-visual-blueprint-for-
designing-effective-web-pages-with-html-css-and-xhtml-1st-
edition-paul-whitehead/
https://ebookname.com/product/the-challenge-of-received-
tradition-dilemmas-of-interpretation-in-radak-s-biblical-
commentaries-1st-edition-naomi-grunhaus/
D D Lords of Madness 1st Edition Richard Baker
https://ebookname.com/product/d-d-lords-of-madness-1st-edition-
richard-baker/
https://ebookname.com/product/feeling-good-the-new-mood-
therapy-2nd-edition-david-d-burns-2/
https://ebookname.com/product/history-and-the-construction-of-
the-child-in-early-british-children-s-literature-1st-edition-
jackie-c-horne/
https://ebookname.com/product/roots-of-sustainability-in-the-
iberian-empires-shipbuilding-and-forestry-14th-19th-
centuries-1st-edition-koldo-trapaga-monchet/
https://ebookname.com/product/the-neck-an-issue-of-oral-and-
maxillofacial-surgery-clinics-1st-edition-eric-dierks/
Resurrecting Pompeii 1st Edition Estelle Lazer
https://ebookname.com/product/resurrecting-pompeii-1st-edition-
estelle-lazer/
O’Reilly Media, Inc. 7/21/2015
I
Developing a Security Plan
1
O’Reilly Media, Inc. 7/21/2015
1
Defining the Application
Environment
Data is the most important resource that any business owns. It’s literally possible to
replace any part of a business except the data. When the data is modified, corrupted,
stolen, or deleted, a business can suffer serious loss. In fact, a business that has enough go
wrong with its data can simply cease to exist. The focus of security, therefore, is not
hackers, applications, networks, or anything else someone might have told you—it’s data.
Therefore, this book is about data security, which encompasses a broad range of other
topics, but it’s important to get right to the point of what you’re really looking to protect
when you read about these other topics.
Unfortunately, data isn’t much use sitting alone in the dark. No matter how fancy your
server is, no matter how capable the database that holds the data, the data isn’t worth
much until you do something with it. The need to manage data brings applications into
the picture and the use of applications to manage data is why this introductory chapter
talks about the application environment.
However, before you go any further, it’s important to decide precisely how applications
and data interact because the rest of the chapter isn’t very helpful without this inside. An
application performs just four operations on data, no matter how incredibly complex the
application might become. You can define these operations by the CRUD acronym:
• Create
• Read
• Update
• Delete
The sections that follow discuss data, applications, and CRUD as they relate to the web
environment. You discover how security affects all three aspects of web development,
keeping in mind that even though data is the focus, the application performs the required
CRUD tasks. Keeping your data safe means understanding the application environment
and therefore the threats to the data the application manages.
1
O’Reilly Media, Inc. 7/21/2015
Code injection occurs more often than you might think. In some cases,
the code injection isn’t even part of an attack, but it might as well be. A
recent article (see http://www.infoworld.com/article/2925839/net-
neutrality/code-injection-new-low-isps.html) discusses how Internet
Service Providers (ISPs) are injecting JavaScript code into the data
stream in order to overlay ads on top of a page. In order to determine
what sort of ad to provide, the ISP also monitors the traffic.
Few experts remind you to check your output data. However, you don’t
actually know that your own application is trustworthy. A hacker could
modify it to allow tainted output data. Verification checks should
include output data as well as input data.
2
O’Reilly Media, Inc. 7/21/2015
• File Uploads: Every file upload, even those that might seem otherwise innocuous, is
suspect. If possible, disallow file uploads to your server. Of course, it isn’t always
possible to provide this level of security, so you need to allow just certain types of
file and then scan the file for problems. Authenticating the file as much as is possible
is always a good idea. For example, some files contain a signature at the beginning
that you can use to ensure the file is legitimate. Don’t rely on file extension
exclusion alone—hackers often make one file look like another type in order to
bypass server security.
• Hard Coded Authentication: Developers often place authentication information in
application initialization files for testing purposes. It’s essential to remove these hard
coded authentication entries and rely on a centralized data store for security
information instead. Keeping the data store in a secure location, off the server used
for web applications, is essential to ensuring that hackers can’t simply view the
credentials used to access the application in certain ways. If you do need
initialization files for the application, make sure these files reside outside the
webroot directory to ensure that hackers can’t discover them accidentally.
• Hidden or Restricted File/Directory Discovery: When your application allows input
of special characters such as the forward slash (/) or backslash (\), it’s possible for a
hacker to discover hidden or restricted files and directories. These locations can
contain all sorts of information that a hacker can find useful in attacking your
system. Disallowing use of special characters whenever possible is a great idea. In
addition, store critical files outside the webroot directory in locations that the
operating system can control directly.
• Missing or Incorrect Authentication: It’s important to know whom you’re dealing
with, especially when working with sensitive data. Many web applications rely on
common accounts for some tasks, which means it’s impossible to know who has
accessed the account. Avoid using guest accounts for any purpose and assign each
user a specific account to use.
• Missing or Incorrect Authorization: Even if you know the person you’re dealing
with, it’s important to provide only the level of authorization needed to perform a
given task. In addition, the authorization should reflect the user’s method of access.
A desktop system accessing the application from the local network is likely more
secure than a smartphone accessing the application from the local coffee shop.
Relying on security promotion to assist in sensitive tasks lets you maintain minimal
rights the rest of the time. Anything you can do to reduce what the user is authorized
to do helps maintain a secure environment.
• Missing or Incorrect Encryption: Use encryption to transmit data of any sort between
two endpoints to help keep hackers from listening in on your communication. It’s
important to keep track of the latest encryption techniques and rely on the best
encryption supported by the user’s environment. For example, Triple Data
Encryption Standard (3DES) isn’t secure any longer, yet some organizations
continue to use it. The current Advanced Encryption Standard (AES) remains mostly
secure, but you want to use the largest key possible to help make it harder to crack.
• Operating System Command Injection: An attacker modifies an operating system
command your application uses to perform specific tasks. Your web-based
application probably shouldn’t use operating system calls in the first place. However,
if you absolutely must make operating system calls, make sure the application runs
in a sandbox.
3
O’Reilly Media, Inc. 7/21/2015
Some experts will emphasize validating input data for some uses and
leave the requirement off for other uses. Always validate any data you
receive from anywhere. You have no way of knowing what vehicle a
hacker will use to obtain access to your system or cause damage in
other ways. Input data is always suspect, even when the data comes
from your own server. Being paranoid is a good thing when you’re
performing security-related tasks.
Many experts will recommend that you use vetted libraries and
frameworks to perform dangerous tasks. However, these add-ons are
simply more code. Hackers find methods for corrupting and
circumventing library and framework code on a regular basis. You still
have a need to ensure your application and any code it relies upon
interacts with outside elements safely, which means performing
extensive testing. Using libraries and frameworks does reduce your
support costs and ensures that you get timely fixes for bugs, but the
bugs still exist and you still need to be on guard. There is no security
silver bullet. Chapter 6 contains more information about working with
libraries and frameworks.
• Session Hijacking: Every time someone logs into your web server, the server gives
that user a unique session. A session hijacker jumps into the session and intercepts
data transferred between the user and the server. The three common places to look
for information used to hijack a session are: cookies, URL rewriting, and hidden
fields. Hackers look for session information in these places. By keeping the session
information encrypted, you can reduce the risk of someone intercepting it. For
example, make sure you rely on the HTTPS protocol for logins. You also want to
avoid doing things like making your session IDs predictable.
• SQL Injection: An attacker modifies a query that your application creates as the
result of user or other input. In many cases, the application requests query input data,
but it receives SQL elements instead. Other forms of SQL injection attack involve
the use of escape or other unexpected characters or character sequences. A good way
to avoid SQL injection attacks is to avoid dynamically generated queries.
This may look like a lot of different threats, but if you search long enough online, you
could easily triple the size of this list and not even begin to scratch the surface of the
4
O’Reilly Media, Inc. 7/21/2015
ways in which a hacker can make your life interesting. As this book progresses, you’ll
encounter a much larger number of threat types and start to discover ways to overcome
them. Don’t worry, in most cases the fixes end up being common sense and a single fix
can resolve more than one problem. For example, look through the list again and you’ll
find that simply using HTTPS solves a number of these problems.
5
O’Reilly Media, Inc. 7/21/2015
misuse of the data and resources that it uses, controls, and protects. This requirement
appears as part of SSA. The following sections discuss SSA in more detail.
SSA isn’t an actual standard at this time. It’s a concept that many
organizations quantify and put into writing based on that organization’s
needs. The same basic patterns appear in many of these documents and
the term SSA refers to the practice of ensuring software remains secure.
You can see how SSA affects many organizations, such as Oracle
(http://www.oracle.com/us/support/assurance/overview/index.html) and
Microsoft
(https://msdn.microsoft.com/library/windows/desktop/84aed186-1d75-
4366-8e61-8d258746bopq.aspx) by reviewing that organizations SSA
documentation online. In fact, many large organizations now have
some form of SSA in place.
6
O’Reilly Media, Inc. 7/21/2015
Figure 1-1. The OWASP site tells you about SSA for web applications.
Even though OSSAP does provide a great framework for ensuring your
application meets SSA requirements, there is no requirement that you
interact with this group in any way. The group does license its approach
to SSA. However, at this time, the group is just getting underway and
you’ll find a lot of TBDs on the site will the group plans to fill in as
time passes. Of course, you need a plan for today, so OWASP and its
OSSAP present a place for you to research solutions for now and
possibly get additional help later.
The whole reason to apply SSA to your application as part of the SDLC is to ensure that
the software is as reliable and error free as you can make it. When talking with some
people, the implication is that SSA will fix every potential security problem that you
might encounter, but this simply isn’t the case. SSA will improve your software, but you
can’t find any pieces of software anywhere that are error free. Assuming that you did
manage to create a piece of error free software, you still have user, environment, network,
and all software of other security issues to consider. Consequently, SSA is simply one
piece of a much larger security picture and implementing SSA will only fix so many
security issues. The best thing to do is to continue seeing security as an ongoing process.
7
O’Reilly Media, Inc. 7/21/2015
8
O’Reilly Media, Inc. 7/21/2015
determine where and how to spend money in order to obtain the best Return on
Investment (ROI), while still meeting application security goals.
It’s important to understand that security isn’t just about the code—it’s
also about the tools required to create the code and the skill of the
developers employing those tools. When an organization chooses the
wrong tools for the job, the risk of a security breach becomes much
higher because the tools may not create code that performs precisely as
expected. Likewise, when developers using the tool don’t have the
required skills, it’s hardly surprising that the software has security holes
that a more skilled developer would avoid.
Some experts claim that there are companies that actually allow
substandard work. In most cases, the excuse for allowing such work is
that the application development process is behind schedule or that the
organization lacks required tools or expertise. The fact that an
organization may employ software designed to help address security
issues (such as a firewall), doesn’t alieve the developer of the
responsibility to create secure code. Organizations need to maintain
coding standards to ensure a good result.
Logic
Interacting with an application and the data it manages is a process. Even though users
might perform tasks in a seemingly random fashion, specific tasks follow patterns that
occur because the user must follow a procedure in order to obtain a good result. By
documenting and understanding these procedures, you can analyze application logic from
a practical perspective. Users rely on a particular procedure because of the way in which
developers design the application. Changing the design will necessarily change the
procedure.
The point of the analysis is to look for security holes in the procedure. For example, the
application may allow the user to remain logged in, even if it doesn’t detect activity for
an extended period. The problem is that the user might not even be present—someone
else could access the application using the users credentials and no one would be the
wiser because everyone would think that the user is logged in using the same system as
always.
However, data holes can take other forms. A part number might consist of various
quantifiable elements. In order to obtain a good part number, the application could ask for
the elements, rather than the part number as a whole, and build the part number from
those elements. The idea is to make the procedure cleaner, clearer, and less error prone so
that the database doesn’t end up containing a lot of bad information.
9
O’Reilly Media, Inc. 7/21/2015
Data
It may not seem like you can perform much analysis on data from a security perspective,
but there really are a lot of issues to consider. In fact, data analysis is one of the areas
where organizations fall down most because the emphasis is on how to manage and use
the data, rather than on how to secure the data (it’s reasonable to assume you need to
address all three issues). When analyzing the data, you must consider these issues:
• Who can access the data
• What format is used to store the data
• When the data is accessible
• Where the data is stored
• Why each data item is made available as part of the application
• How the data is broken into components and the result of combining the data for
application use
For example, some applications fail to practice data hiding, which is an essential feature
of any good application. Data hiding means giving the user only the amount of
information actually needed to perform any given task.
Applications also format some data incorrectly. For example, storing passwords as text
will almost certainly cause problems should someone break in. A better route is to store
the password hash. The hash isn’t at all valuable to someone who has broken in because
the application needs the password on which the hash is based.
Making all data accessible all the time is also a bad idea. Sensitive data should only
appear on screen when someone is available to monitor its use and react immediately
should the user do something unexpected.
Storing sensitive data in the cloud is a particularly bad idea. Yes, using cloud storage
makes the data more readily available and faster to access as well, but it also makes the
data vulnerable. Store sensitive data on local servers when you have direct access to all
the security features used to keep the data safe.
Application developers also have a propensity for making too much information
available. You use data hiding to keep manager-specific data hidden from other kinds of
users. However, some data has no place in the application at all. If no one actually needs
a piece of data to perform a task, then don’t add the data to the application.
Many data items today are an aggregation of other data elements. It’s possible for a
hacker to learn a lot about your organization by detecting the form of aggregation used
and taking the data item apart to discover the constituent parts. It’s important to consider
how the data is put together and to add safeguards that make it harder to discover the
source of that data.
Interface
A big problem with software today is the inclusion of gratuitous features. An application
is supposed to meet a specific set of goals, perform a specific set of tasks. Invariably,
someone gets the idea that the software might be somehow better if it had certain features
that have nothing to do with the core goals the software is supposed to meet. The term
feature bloat has been around for a long time. You normally see it discussed in a
monetary sense—as the source of application speed problems, the elevator of user
10
O’Reilly Media, Inc. 7/21/2015
training costs, and the wrecker of development schedules. However, application interface
issues, those that are often most affected by feature bloat, have a significant impact on
security in the form of increased attack surface. Every time you increase the attack
surface, you provide more opportunities for a hacker to obtain access to your
organization. Getting rid of gratuitous features or moving them to an entirely different
application, will reduce the attack surface—making your application a lot more secure.
Of course, you’ll save money too.
Another potential problem is the hint interface—one that actually gives the security
features of the application away by providing a potential hacker with too much
information or too many features. Even though the password used to help a user retrieve a
lost password is necessary, some implementations actually make it possible for a hacker
to retrieve the user’s password and become that user. The hacker might even lock the real
user out of the account by changing the password (although, this action would be
counterproductive because an administrator could restore the user’s access quite easily).
A better system is to ensure that the user actually made the request before doing anything
and then ensuring that the administrator sends the login information in a secure manner.
Constraint
A constraint is simply a method of ensuring that actions meet specific criteria before the
action is allowed. For example, disallowing access to data elements unless the user has a
right to access them is a kind of constraint. However, constraints have other forms that
are more important. The most important constraint is determining how any given user can
manage data. Most users only require read access to data, yet applications commonly
provide read/write access, which opens a huge security hole.
Data has constraints to consider as well. When working with data, you must define
precisely what makes the data unique and ensure the application doesn’t break any rules
regarding that uniqueness. With this in mind, you generally need to consider these kinds
of constraints:
• Ensure the data is the right type
• Define the range of values the data can accept
• Specify the maximum and minimum data lengths
• List any unacceptable data values
11
O’Reilly Media, Inc. 7/21/2015
smartphone without any special coding on the part of the developer. Often, libraries,
APIs, and microservices provide content in a form that matches the host system
automatically, without any developer intervention. However, the flexibility that HTML5
provides can also be problematic. The following list describes some key security issues
you experience when working with HTML5.
• Code Injection: HTML5 provides a large number of ways in which a hacker could
inject malicious code, including sources you might not usually consider suspicious,
such as a YouTube video or streamed music.
• User Tracking: Because your application uses code from multiple sources in most
cases, you might find that a library, API, or microservice actually performs some
type of user tracking that a hacker could use to learn more about your organization.
Every piece of information you give a hacker makes the process of overcoming your
security easier.
• Tainted Inputs: Unless you provide your own input checking, HTML5 lets any input
the user wants to provide through. You may only need a numeric value, but the user
could provide a script instead. Trying to check inputs thoroughly to ensure you really
are getting what you requested is nearly impossible on the client side, so you need to
ensure you have robust server-side checking as well.
12
O’Reilly Media, Inc. 7/21/2015
13
Discovering Diverse Content Through
Random Scribd Documents
The Little Dream. By John Galsworthy.
The Fugitive. By John Galsworthy.
The Mob. By John Galsworthy.
The Pigeon. By John Galsworthy.
A Bit o’ Love. By John Galsworthy.
Love’s Comedy. By Henrik Ibsen. (Cloth binding only.)
The Divine Gift. By Henry Arthur Jones. With an Introduction and a
Portrait. (5s. net. Cloth binding only.)
The Widowing of Mrs Holroyd. A Drama. By D. H. Lawrence. With an
Introduction. (Cloth only, 5s. net.)
Peter’s Chance. A Play. By Edith Lyttelton.
Three Little Dramas. By Maurice Maeterlinck. (Cloth binding only.)
The Heatherfield. By Edward Martyn.
Maeve. By Edward Martyn.
The Dream Physician. By Edward Martyn.
St Francis of Assisi. A Play in Five Acts. By J.-A. Peladan. (Cloth only, 3s.
6d. net.)
The Mother. A Play. By Eden Phillpotts.
The Shadow. A Play. By Eden Phillpotts.
The Secret Woman. A Drama. By Eden Phillpotts.
The Farmer’s Wife. A Comedy. By Eden Phillpotts.
St George and the Dragon. A Play. By Eden Phillpotts.
Curtain Raisers. One Act Plays. By Eden Phillpotts.
Creditors. Pariah. Two Plays. By August Strindberg. (Cloth binding only.)
There are Crimes and Crimes. By August Strindberg. (Cloth binding only.)
Five Little Plays. By Alfred Sutro.
The Two Virtues. A Play. By Alfred Sutro.
Freedom. A Play. By Alfred Sutro.
The Choice. A Play. By Alfred Sutro.
The Dawn (Les Aubes). By Emile Verhaeren. Translated by Arthur Symons.
(Cloth binding only.)
The Princess of Hanover. By Margaret L. Woods. (Cloth binding only.)
Plays. By Leonid Andreyef. Translated from the Russian, with an
Introduction by F. N. Scott and C. L. Meader. Cr. 8vo, cloth gilt. 7s.
6d. net. Postage 6d.
Plays. (First Series.) By Björnstjerne Björnson. (The Gauntlet, Beyond our
Power, The New System.) With an Introduction and Bibliography. In
one vol. Cr. 8vo. 7s. 6d. net. Postage 6d.
Plays. (Second Series.) By Björnstjerne Björnson. (Love and Geography,
Beyond Human Might, Laboremus.) With an Introduction by Edwin
Björkman. In one vol. Cr. 8vo. 7s. 6d. net. Postage 6d.
Modern Plays—continued [Postage 6d. unless otherwise stated]
Three Plays. By Mrs W. K. Clifford (Hamilton’s Second Marriage, Thomas
and the Princess, The Modern Way.) Sq. cr. 8vo. 7s. 6d. net.
Plays (First Series). By John Galsworthy. Three Plays (Joy, Strife, The
Silver Box). Sq. cr. 8vo. 7s. net.
Plays (Second Series). By John Galsworthy. Three Plays (Justice, The
Little Dream, The Eldest Son). Sq. cr. 8vo. 7s. net.
Plays (Third Series). By John Galsworthy. Three Plays (The Pigeon, The
Fugitive, The Mob). Cr. 8vo. 7s. net.
Plays (Fourth Series). By John Galsworthy. Three Plays (A Bit o’ Love, The
Skin Game, Foundations). Sq. cr. 8vo. 7s. net.
Plays (Fifth Series). By John Galsworthy. Three Plays (A Family Man,
Loyalties, Windows). Sq. cr. 8vo. 7s. net.
Six Short Plays. By John Galsworthy. (The Little Man, The First and the
Last, Hall Marked, Defeat, The Sun, Punch and Go.) Sq. cr. 8vo. 5s.
net. Postage 5d.
Plays. By Gwen John. (Outlaws, Corinna, Sealing the Compact, Edge o’
Dark, The Case of Theresa, In the Rector’s Study.) With an
Introduction. Cr. 8vo. 7s. 6d. net.
Four Tragedies. By Allan Monkhouse. (The Hayling Family, The Stricklands,
Resentment, Reaping the Whirlwind.) Cr. 8vo. cloth gilt. 7s. 6d. net.
Plays. By Eden Phillpots. (The Mother, The Shadow, The Secret Woman.)
Cr. 8vo. 7s. 6d. net.
Plays. (First Series.) By August Strindberg. (The Dream Play, The Link,
The Dance of Death, Part I.; The Dance of Death, Part II.) Cr. 8vo.
7s. 6d. net.
Plays. (Second Series.) By August Strindberg (Creditors, Pariah, There are
Crimes and Crimes, Miss Julia, The Stronger.) 7s. 6d. net.
Plays. (Third Series.) By August Strindberg. (Advent, Simoom, Swan
White, Debit and Credit, The Thunder Storm, After the Fire.) Cr. 8vo.
7s. 6d. net.
Plays. (Fourth Series.) By August Strindberg. (The Bridal Crown, The
Spook Sonata, The First Warning, Gustavus Vasa.) Cr. 8vo. 7s. 6d.
net.
Plays. (First Series.) By Anton Tchekoff. (Uncle Vanya, Ivanoff, The
Seagull, The Swan Song.) With an Introduction. Cr. 8vo. 7s. 6d. net.
Plays. (Second Series.) By Anton Tchekoff. (The Cherry Orchard, The
Three Sisters, The Bear, The Proposal, The Marriage, The
Anniversary, A Tragedian.) With an Introduction. Completing in two
volumes the Dramatic Works of Tchekoff. Cr. 8vo. 7s. 6d. net.
STUDIES IN THEOLOGY
A New Series of Handbooks, being aids to interpretation in Biblical Criticism for the
use of the Clergy, Divinity Students, and Laymen. Cr. 8vo. 5s. net a volume.
Postage 5d.
THE
STUDENT SERIES
is designed to give, within a small compass, and at a low price, an outline of the
ideas resulting from modern study and research.
Cr. 8vo. Paper Covers. 2s. net per volume.
LIST OF VOLUMES
1. SYNDICALISM
J. A. R. Marriott, M.P. (Late Fellow of Worcester College, Oxford)
2. BRITISH ASPECTS OF WAR AND PEACE
Spenser Wilkinson
3. AN INTRODUCTION TO THE READING OF SHAKESPEARE
Frederick S. Boas, M.A., LL.D.
4. THE BODLEIAN LIBRARY AT OXFORD
Falconer Madan (Hon. Fellow of Brasenose College, Oxford)
5. TREATISE ON LAW
Edward Jenks
6. *THE STUDY OF ROMAN HISTORY
Bernard W. Henderson (Fellow and Tutor of Exeter College, Oxford)
7. THE LATIN CULTURE
E. A. Burroughs (Fellow and Tutor of Hertford College,
Oxford)
8. *OUTLINE-HISTORY OF GREEK RELIGION
L. R. Farnell (Rector of Exeter College, Oxford)
9. ENGLISH HISTORY, 499-1914
Arthur Hassall (Student of Christ Church, Oxford)
* These are also issued reset, on good paper, bound in cloth, at 6s. net each.
DUCKWORTH & CO., 3 Henrietta Street, London, W.C.2
1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside
the United States, check the laws of your country in addition to
the terms of this agreement before downloading, copying,
displaying, performing, distributing or creating derivative works
based on this work or any other Project Gutenberg™ work. The
Foundation makes no representations concerning the copyright
status of any work in any country other than the United States.
1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if
you provide access to or distribute copies of a Project
Gutenberg™ work in a format other than “Plain Vanilla ASCII” or
other format used in the official version posted on the official
Project Gutenberg™ website (www.gutenberg.org), you must,
at no additional cost, fee or expense to the user, provide a copy,
a means of exporting a copy, or a means of obtaining a copy
upon request, of the work in its original “Plain Vanilla ASCII” or
other form. Any alternate format must include the full Project
Gutenberg™ License as specified in paragraph 1.E.1.
• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”
• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.
1.F.
Most people start at our website which has the main PG search
facility: www.gutenberg.org.
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
ebookname.com