description: application that uses a web browser as a client
364 results
by Olga Filipova · 13 Dec 2016 · 292pp · 66,588 words
a guru of frameworks and languages in the vast ocean of web technologies, this book might show you something new in the world of reactive web applications. If you are a Vue developer and have used Vue 1.0, this book might be a useful guide for you to migrate to Vue
…
we will do our best to address the problem. Chapter 1. Going Shopping with Vue.js "Vue.js is a JavaScript framework for building astonishing web applications. Vue.js is a JavaScript library for creating web interfaces. Vue.js is a tool that leverages the use of MVVM architecture." Simplified JavaScript Jargon
…
Vue.js is a progressive JavaScript framework: So what is Vue.js after all? Framework? Tool? Library? Should it be used for building full-stack web applications or just for adding some special functionality? Should I switch from my favorite framework to it? If yes, why? Can I use it alongside other
…
it—just do it! Note Vue.js was born as a tool for rapid prototyping. Now it can be used to build complex scalable reactive web applications. That was what Evan did. That is how he came to the idea of creating a library that would help in rapid prototyping by offering
…
so nonopinionated of the application structuring that it definitely can be considered as a framework capable of supporting the end-to-end building of complex web applications. The most important thing about Vue.js Vue.js allows you to simply bind your data models to the representation layer. It also allows you
…
change it, rebuild, test, deploy! Happy pull requests! Debugging your Vue application You can debug your Vue application the same way you debug any other web application. Use your developer tools (firebug), breakpoints, debugger statements, and so on. If you want to dive deep inside the Chrome debugging tools, check Chrome's
…
test all the aspects of the application—APIs, frontend, backend, databases, server load, assuring thus the quality of the system integration. In the case of web applications, these tests are performed via UI testing. Each test describes all the steps from opening the browser until closing it. All the steps needed to
…
definition means that after we perform all the necessary activities, our software will be accessible to the public. In our case, as we are deploying web applications, it means that there will be a public URL, and any person will be able to type this URL on their browser and access the
…
using Vue.js. Let's revisit them. Shopping list application The shopping list application that we have developed in this book's chapters is a web application that allows the following: Create different shopping lists Add new items to the shopping lists and check them once they are bought Rename shopping lists
…
would use every time you go shopping, isn't it? The Pomodoro application The Pomodoro application that we have developed in this book is a web application that implements a Pomodoro timer with white noise during the working Pomodoros and nice pictures of cats during the interval time. It allows the following
…
opportunities is endless. Use your creativity, use Vue's power to achieve your ideas. Extending our applications to other devices Both of our applications are web applications. While it might be okay for the Pomodoro application if we work the whole day on the computer and use the Web, it might be
…
browser in the supermarket, but it might be slow and not so nice to use. Use Weex ( https://github.com/alibaba/weex ) to bring our web applications to the mobile devices. Both the applications can also be extended to be used as a Google Chrome app, just as we learned in Chapter
by Michal Zalewski · 26 Nov 2011 · 570pp · 115,722 words
few counterparts in dedicated, compartmentalized client architectures. Nonconvergence of Visions Fortunately, the browser security landscape is not entirely hopeless, and despite limited separation between web applications, several selective security mechanisms offer rudimentary protection against the most obvious attacks. But this brings us to another characteristic that makes the Web such an
…
the ban on goto statements), JavaScript exhibits a more fundamentalist stance. Execution Ordering Control In order to properly analyze the security properties of certain common web application design patterns, it is important to understand the JavaScript engine’s execution ordering and timing model. Thankfully, this model is remarkably sane. Virtually all
…
potentially hostile document has led to a fair number of security vulnerabilities in browser plug-ins, JavaScript-based extensions, and several classes of client-side web application security features. These vulnerabilities eventually resulted in the development of browser-level workarounds designed to partially protect this specific object against sabotage, but most
…
passive media formats (and unlike some types of plug-in-rendered content!), neither <bgsound> nor HTML5 multimedia are expected to have any unusual implications for web application security, as long as the possibility of content misidentification is mitigated appropriately.[37] * * * [37] But some far-fetched interactions between various technologies are a
…
xmlns namespace. Firefox uses XUL for much of its internal UI, but otherwise the language is seldom encountered on the Internet. From the standpoint of web application security, Internet-originating XUL documents can be considered roughly equivalent to HTML documents. Essentially, the language has JavaScript scripting capabilities and allows broad control
…
DOM of the embedding page. This last functionality is implemented by injecting eval(...)-like statements into the target JavaScript context. ActionScript offers fertile ground for web application vulnerabilities. For example, the getURL(...) and navigateToURL(...) functions, used to navigate the browser or open new windows, are sometimes invoked with attacker-controlled inputs.
…
most egregious mistakes were cautiously reverted in the past decade, two companies—Microsoft and Apple—largely resisted the effort. They decided that interoperability with broken web applications should trump the obvious security problems. To pacify any detractors, they implemented a couple of imperfect, secondary security mechanisms intended to mitigate the risk.
…
stretched thin between addressing comparatively more serious implementation-level flaws in the notoriously buggy browser codebases and rolling out new, shiny security features that appease web application developers, users, and the mainstream press alike. Denial-of-Service Attacks The possibility of an attacker crashing a browser or otherwise rendering it inoperable
…
Use Restrictions Window-related woes aside, all web-originating scripts can open certain browser- or OS-handled dialogs. The usefulness of these dialogs to modern web applications is minimal, but they still constitute another interesting part of the browser security landscape. Dialog-initiating APIs include window.alert(...), used to display simple
…
browsers and outright impossible to have in Internet Explorer. Other Developments The security features discussed previously in this chapter aim to shift the boundaries between web applications and change the way sites interact with each other. Another group of proposed mechanisms escapes this simple classification yet is important or mature enough
…
terms; nomenclature such as improper restriction of operations within the bounds of a memory buffer (Common Weakness Enumeration) or insecure direct object references (Open Web Application Security Project) finds no place in a reasonable conversation—and rightly so. Nevertheless, the industry has come up with a handful of reasonably precise phrases
…
Cache poisoning The possibility of long-term pollution of the browser cache (or any interim proxies) with a fabricated, malicious version of the targeted web application. Encrypted web applications may be targeted due to response-splitting vulnerabilities. For nonencrypted traffic, active network attackers may be able to modify the responses received by the requestor
…
byte order marks (BOM), Character Set Handling C cache manifests, URL- and Protocol-Level Proposals cache poisoning, Access to Internal Networks, Vulnerabilities Specific to Web Applications Cache-Control directive, Resolution of Duplicate or Conflicting Headers, Caching Behavior cache. See browser cache, Resolution of Duplicate or Conflicting Headers, Caching Behavior caching behavior
…
, Character Set Handling, Character Set Inheritance and Override, Character Set Inheritance and Override, Markup-Controlled Charset on Subresources, Problems to Keep in Mind in Web Application Design byte order marks and detection, Character Set Handling detection for non-HTTP files, Markup-Controlled Charset on Subresources for headers, Semicolon-Delimited Header Values
…
Text inheritance and override, Character Set Inheritance and Override markup-controlled, on subresources, Character Set Inheritance and Override sniffing, Problems to Keep in Mind in Web Application Design characters, Fragment ID, Putting It All Together Again, Putting It All Together Again, Reserved Characters and Percent Encoding, Reserved Characters and Percent Encoding,
…
transfers, Keepalive Sessions click() method, Pop-Up Filtering clickjacking, Unsolicited Framing, Beyond the Threat of a Single Click, Problems to Keep in Mind in Web Application Design client certificates, Protocol-Level Encryption and Client Certificates client-server architecture, The Breakdown of the Client-Server Divide client-side data, Origin Inheritance client
…
of, Primary CSP Directives violations, Policy Violations content sniffing, Content Recognition Mechanisms, Downloaded Files and Other Non-HTTP Content, Problems to Keep in Mind in Web Application Design Content-Disposition directive, Resolution of Duplicate or Conflicting Headers, Header Character Set and Encoding Schemes, Error-Handling Rules, Type-Specific Content Inclusion, Scalable
…
, The Unusual Danger of “localhost” and same-origin policy, Security Policy for Cookies deleting, HTTP Cookie Semantics forcing, Problems to Keep in Mind in Web Application Design limitations on third-party, Prohibited Ports security policy for, Security Policy for Cookies semantics, Caching Behavior user data in, Error-Handling Rules CORS. See
…
Domain Content Inclusion cross-site request forgery (XSRF, CSRF), Type-Specific Content Inclusion, postMessage(...), Access to Internal Networks, Access to Internal Networks, Vulnerabilities Specific to Web Applications exploitation of flaws, Access to Internal Networks login forms and, postMessage(...) cross-site script inclusion (XSSI), Impact on Potential Uses of the Language, Vulnerabilities Specific
…
to Web Applications cross-site scripting (XSS), Basic Concepts Behind HTML Documents, Access to Internal Networks, Form-Based Password Managers, In-Browser HTML Sanitizers, XSS Filtering, Vulnerabilities
…
Specific to Web Applications bugs, and password managers, Form-Based Password Managers exploitation of flaws, Access to Internal Networks filtering, In-Browser HTML Sanitizers, XSS Filtering crossdomain.xml file
…
Other Developments, XSS Filtering CSRF (cross-site request forgery), Type-Specific Content Inclusion, postMessage(...), Access to Internal Networks, Access to Internal Networks, Vulnerabilities Specific to Web Applications exploitation of flaws, Access to Internal Networks login forms and, postMessage(...) CSS. See Cascading Style Sheets (CSS), Problems with Domain Restrictions CUPS (Common UNIX Printing
…
delimiting characters, in URLs, Fragment ID denial-of-service (DoS) attacks, Dealing with Rogue Scripts, Strict Transport Security, Problems to Keep in Mind in Web Application Design DeviceOrientation API, Content-Level Features dialog use restrictions, Pop-Up Filtering digest credential-passing method, HTTP Authentication Digital Rights Management (DRM), Document Rendering Helpers
…
cross-domain communications, Frame Hijacking Risks frame-ancestors directive, Primary CSP Directives frame-src directive, Primary CSP Directives framebusting, Problems to Keep in Mind in Web Application Design frames, Frames, Life Outside Same-Origin Rules, Changing the Location of Existing Documents, Changing the Location of Existing Documents, Frame Descendant Policy and
…
of JavaScript HDP file format, Type-Specific Content Inclusion HEAD request (HTTP), HEAD header injection, Newline Handling Quirks, Current Status of CORS, Vulnerabilities Specific to Web Applications headers, Basic Syntax of HTTP Traffic, Proxy Requests, Resolution of Duplicate or Conflicting Headers, Semicolon-Delimited Header Values, Semicolon-Delimited Header Values, Content Security
…
Behavior, HTTP Cookie Semantics, Document Parsing Modes, Entity Encoding, Content Recognition Mechanisms, Connection Limits, URL- and Protocol-Level Proposals, Problems to Keep in Mind in Web Application Design authentication, HTTP Cookie Semantics basic syntax, Hypertext Transfer Protocol binary, URL- and Protocol-Level Proposals caching behavior, Chunked Data Transfers cookie semantics, Caching Behavior
…
downgrade, Problems to Keep in Mind in Web Application Design history, Hypertext Transfer Protocol HTML integration semantics, Entity Encoding newline handling, Newline Handling Quirks proxy requests, Proxy Requests request types, HTTP Request Types semantics
…
conditionals, in HTML, Interactions Between Multiple Tags IndexedDB design, Content-Level Features indicator of hierarchical URLs, Scheme Name information security, Security in the World of Web Applications inheritance, for vbscript: scheme, Inheritance for data: URLs inline-script setting, Content Security Policy innerHTML property, The Document Object Model innerStaticHTML API, In-Browser
…
Character Encoding Lessig, Lawrence, Prohibited Ports LF (newline), HTTP quirks in handling, Newline Handling Quirks LFI (local file inclusion), Problems to Keep in Mind in Web Application Design Lie, Wium, Håkon, Cascading Style Sheets LiveScript, Browser-Side Scripts livescript: scheme, Protocols Claimed by Third-Party Applications and Plug-ins loadPolicyFile() method,
…
Markup-Level Security Controls local file inclusion (LFI), Problems to Keep in Mind in Web Application Design local files, access issues, Hostnames with Extra Periods local intranet zone, for Internet Explorer, Form-Based Password Managers local machine zone, for Internet Explorer
…
Forms, and Navigation Mitchell, John C., Frame Descendant Policy and Cross-Domain Communications, XDomainRequest mixed content, A Note on Cross-Origin Subresources, Vulnerabilities Specific to Web Applications mmst: scheme, Common URL Schemes and Their Function mmsu: scheme, Common URL Schemes and Their Function Mocha language, Browser-Side Scripts mocha: scheme, Protocols Claimed
…
Isolation Logic cookie specification, Problems with Domain Restrictions Netscape Navigator, The First Browser Wars: 1995 to 1999 network fenceposts, Problems to Keep in Mind in Web Application Design networking, HTTP-less, URL- and Protocol-Level Proposals New York Times, Limitations on Third-Party Cookies newline, HTTP quirks in handling, Newline Handling
…
document, Privacy-Related Side Channels onmousemove events, Window-Positioning and Appearance Problems opacity property (CSS2), and JavaScript code, Unsolicited Framing open redirection, Vulnerabilities Specific to Web Applications opener.window.focus() function, Connection Limits OpenGL-based 3D graphics, Plug-in-Based Application Frameworks Opera, Tales of the Stone Age: 1945 to 1994,
…
permissions to examine payload, Content Recognition Mechanisms on HTTP, Resolution of Duplicate or Conflicting Headers RFI (remote file inclusion), Problems to Keep in Mind in Web Application Design rgb(...) pseudo functions (CSS), Basic CSS Syntax Riley, Chris John, Unrecognized Content Type Rios, Billy, Invoking a Plug-in risk management, Enter Risk
…
, Mark of the Web and Zone.Identifier, XSS Filtering, XSS Filtering, XSS Filtering, XSS Filtering, XSS Filtering, XSS Filtering, XSS Filtering, XSS Filtering building web applications on internal networks, Limitations on Third-Party Cookies Content Security Policy (CSP), XSS Filtering converting HTML to plaintext, A Note on Cross-Site Request Forgery
…
modes, XSS Filtering putting attacker-controlled values into CSS, Character Encoding relying on HTTP cookies for authentication, Other Uses of Origins requesting elevated permissions within web application, Mark of the Web and Zone.Identifier sandboxed frames, XSS Filtering security hygiene for all websites, Other SOP Loopholes and Their Uses security policy
…
Type-Specific Content Inclusion web 2.0, The Boring Period: 2000 to 2003 web applications, Vulnerabilities Specific to Web Applications, Vulnerabilities Specific to Web Applications, Problems to Keep in Mind in Web Application Design design issues, Vulnerabilities Specific to Web Applications vulnerabilities specific to, Vulnerabilities Specific to Web Applications Web Hypertext Application Technology Working Group (WHATWG), Web 2.0 and the Second
…
Cross-Domain Policy Files XSRF (cross-site request forgery), Type-Specific Content Inclusion, postMessage(...), Access to Internal Networks, Access to Internal Networks, Vulnerabilities Specific to Web Applications exploitation of flaws, Access to Internal Networks login forms and, postMessage(...) XSS (cross-site scripting), Basic Concepts Behind HTML Documents, Access to Internal Networks, Form
…
-Based Password Managers, In-Browser HTML Sanitizers, XSS Filtering, Vulnerabilities Specific to Web Applications bugs, and password managers, Form-Based Password Managers exploitation of flaws, Access to Internal Networks filtering, In-Browser HTML Sanitizers, XSS Filtering XUL (XML User
by Michael Snoyman · 22 Apr 2012 · 485pp · 74,211 words
Developing Web Applications with Haskell and Yesod Michael Snoyman Editor Simon St. Laurent Copyright © 2012 Michael Snoyman O’Reilly books may be purchased for educational, business, or sales
…
-9938 or corporate@oreilly.com. Nutshell Handbook, the Nutshell Handbook logo, and the O’Reilly logo are registered trademarks of O’Reilly Media, Inc. Developing Web Applications with Haskell and Yesod, the rhinoceros beetle, the mountain apollo butterfly, and related trade dress are trademarks of O’Reilly Media, Inc. Many of the
…
’s fair to say that dynamic languages currently dominate the web development scene. Ruby, Python, and PHP are common choices for quickly creating a powerful web application. They give a much faster and more comfortable development setting than standard static languages in the C family, like Java. But some of us are
…
Yesod. The first group is long time Haskell users—already convinced of the advantages of Haskell—who are looking for a powerful framework for creating web applications. The second is web developers who are either dissatisfied with their existing tools, or are looking to expand their horizons into the functional world. This
…
’s documentation does require permission. We appreciate, but do not require, attribution. An attribution usually includes the title, author, publisher, and ISBN. For example: “Developing Web Applications with Haskell and Yesod by Michael Snoyman (O’Reilly). Copyright 2012 Michael Snoyman, 978-1-449-31697-6.” If you feel your use of code
…
solve some of the lingering difficulties of security threats, the stateless nature of HTTP, the multiple languages (HTML, CSS, JavaScript) necessary to create a powerful web application, and more. Yesod attempts to ease the web development process by playing to the strengths of the Haskell programming language. Haskell’s strong compile-time
…
a high-level definition and remain blissfully ignorant of the details. Concise We all know that there is a lot of boilerplate coding involved in web applications. Wherever possible, Yesod tries to use Haskell’s features to save your fingers the work: The forms library reduces the amount of code used for
…
flagship web server, Warp, is the fastest Haskell web server around. When these two pieces of technology are combined, it produces one of the fastest web application deployment solutions available. Modular Yesod has spawned the creation of dozens of packages, most of which are usable in a context outside of Yesod itself
…
). One of the features of Yesod is that you aren’t tied down to a single deployment strategy. Yesod is built on top of the Web Application Interface (WAI), allowing it to run on FastCGI, SCGI, Warp, or even as a desktop application using the Webkit library. We’ll discuss some of
…
file server in a number of production environments. Resources and Type-Safe URLs In our hello world, we defined just a single resource (HomeR). A web application is usually much more exciting with more than one page on it. Let’s take a look: {-# LANGUAGE TypeFamilies, QuasiQuotes, MultiParamTypeClasses, TemplateHaskell, OverloadedStrings #-} import Yesod
…
of syntactic sugar: the doctype statement. We have support for a number of different versions of a doctype, though we recommend $doctype 5 for modern web applications, which generates <!DOCTYPE html>. $doctype 5 <html> <head> <title>Hamlet is Awesome <body> <p>All done. Note There is an older and still supported syntax
…
to the POST parameters, you should use runRequest. If you need even more raw data, like request headers, you can use waiRequest to access the Web Application Interface (WAI) request value. See the WAI appendix for more details. Short Circuiting The following functions immediately end execution of a handler function and return
…
hinted at a number of more complex Yesod topics that we will be covering later. But you should be able to write some very sophisticated web applications with just the knowledge you have learned up until here. Chapter 8. Forms I’ve mentioned the boundary issue already: whenever data enters or leaves
…
one way we bypass the statelessness imposed by HTTP. We shouldn’t consider this an escape hatch to perform whatever actions we want: statelessness in web applications is a virtue, and we should respect it whenever possible. However, there are specific cases where it is vital to retain some state. The session
…
a sum type intended for representing arbitrary data: PersistValue: newtype Key entity = Key PersistValue But this has another problem. Let’s say we have a web application that takes an ID as a parameter from the user. It will need to receive that parameter as Text and then try to convert it
…
a simple combination to build your executable is: cabal clean && cabal configure && cabal build Warp As we have mentioned before, Yesod is built on the Web Application Interface (WAI), allowing it to run on any WAI backend. At the time of writing, the following backends are available: Warp FastCGI SCGI CGI Webkit
…
max; } } Server Process Many people are familiar with an Apache/mod_php or Lighttpd/FastCGI kind of setup, where the web server automatically spawns the web application. With nginx, either for reverse proxying or FastCGI, this is not the case: you are responsible for running your own process. I strongly recommend a
…
Representational State Transfer, also known as REST. This chapter describes the RESTful features in Yesod and how you can use them to create more robust web applications. Request Methods In many web frameworks, you write one handler function per resource. In Yesod, the default is to have a separate handler function for
…
> </tr> </table> or we could represent it as JSON: {"name":"Michael","age":25} or as XML: <person> <name>Michael</name> <age>25</age> </person> Oftentimes, web applications will use a different URL to get each of these representations; perhaps /person/michael.html, /person/michael.json, etc. Yesod follows the RESTful principle of
…
can of course extend this to work with XML, Atom feeds, or even binary representations of the data. A fun exercise could be writing a web application that serves data simply using the default Show instances of data types, and then writing a web client that parses the results using the default
…
start off by buffering our source. This buffered source is then used twice in our function, and then passed off to the application. Appendix C. Web Application Interface It is a problem almost every language used for web development has dealt with: the low-level interface between the web server and the
by Miguel Grinberg · 12 May 2014 · 420pp · 61,808 words
freedom is that Flask was designed from the start to be extended. It comes with a robust core that includes the basic functionality that all web applications need and expects the rest to be provided by some of the many third-party extensions in the ecosystem and, of course, by you. In
…
this book I present my workflow for developing web applications with Flask. I don’t claim to have the only true way to build applications with this framework. You should take my choices as recommendations
…
, you will spend a great deal of time in the command line. You should feel comfortable using the command line of your operating system. Modern web applications cannot avoid the use of HTML, CSS, and JavaScript. The example application that is developed throughout the book obviously makes use of these, but the
…
this book with the official Flask documentation. How This Book Is Organized This book is divided into three parts: Part I, explores the basics of web application development with the Flask framework and some of its extensions: Chapter 1 describes the installation and setup of the Flask framework. Chapter 2 dives straight
…
no native support in Flask for accessing databases, validating web forms, authenticating users, or other high-level tasks. These and many other key services most web applications need are available through extensions that integrate with the core packages. As a developer, you have the power to cherry-pick the extensions that work
…
: (venv) $ python >>> import flask >>> If no errors appear, you can congratulate yourself: you are ready for the next chapter, where you will write your first web application. Chapter 2. Basic Application Structure In this chapter, you will learn about the different parts of a Flask application. You will also write and run
…
your first Flask web application. Initialization All Flask applications must create an application instance. The web server passes all requests it receives from clients to this object for handling, using
…
will learn about production web servers in Chapter 17. A Complete Application In the previous sections, you learned about the different parts of a Flask web application, and now it is time to write one. The entire hello.py application script is nothing more than the three parts described earlier combined in
…
routes. The function will add any extra arguments to the query string. For example, url_for('index', page=2) would return /?page=2. Static Files Web applications are not made of Python code and templates alone. Most applications also use static files such as images, JavaScript source files, and CSS that are
…
checkout 3d to check out this version of the application. Localization of Dates and Times with Flask-Moment Handling of dates and times in a web application is not a trivial problem when users work in different parts of the world. The server needs uniform time units that are independent of the
…
cases is not the desired action. Many users do not understand the warning from the browser. For this reason, it is considered good practice for web applications to never leave a POST request as a last request sent by the browser. This practice can be achieved by responding to POST requests with
…
application data in an organized way. The application then issues queries to retrieve specific portions as they are needed. The most commonly used databases for web applications are those based on the relational model, also called SQL databases in reference to the Structured Query Language they use. But in recent years document
…
_email() function can be sent to a Celery task queue. This chapter completes the overview of the features that are a must-have for most web applications. The problem now is that the hello.py script is starting to get large and that makes it harder to work with. In the next
…
chapter, you will learn how to structure a larger application. Chapter 7. Large Application Structure Although having small web applications stored in a single script can be very convenient, this approach does not scale well. As the application grows in complexity, working with a single
…
db upgrade Believe it or not, you have reached the end of Part I. You now have learned the basic elements necessary to build a web application with Flask, but you probably feel unsure about how all these pieces fit together to form a real application. The goal of Part II is
…
Flask-Bootstrap: HTML templates Flask-WTF: Web forms Password Security The safety of user information stored in databases is often overlooked during the design of web applications. If an attacker is able to break into your server and access your user database, then you risk the security of your users, and the
…
the next chapter, the user subsystem of Flasky will be extended through the use of user roles. Chapter 9. User Roles Not all users of web applications are created equal. In most applications, a small percentage of users are trusted with extra powers to help keep the application running smoothly. Administrators are
…
checkout 11h to check out this version of the application. Figure 11-4. Edit and Permalink links in blog posts. Chapter 12. Followers Socially aware web applications allow users to connect with other users. Applications call these relationships followers, friends, contacts, connections, or buddies, but the feature is the same regardless of
…
as an API that clients other than web browsers can use. Chapter 14. Application Programming Interfaces In recent years, there has been a trend in web applications to move more and more of the business logic to the client side, producing an architecture that is known as Rich Internet Application (RIA). In
…
Object Access Protocol (SOAP) were popular choices a few years ago. More recently, the Representational State Transfer (REST) architecture has emerged as the favorite for web applications due to it being built on the familiar model of the World Wide Web. Flask is an ideal framework to build RESTful web services due
…
discover new web pages while browsing the Web by clicking on links that appear in pages that you know. Versioning In a traditional server-centric web application, the server has full control of the application. When an application is updated, installing the new version in the server is enough to update all
…
the app stores to coincide exactly with the deployment of the new server. For these reasons, web services need to be more tolerant than regular web applications and be able to work with old versions of its clients. A common way to address this problem is to version the URLs handled by
…
Now view functions in the web service can invoke these auxiliary functions to generate error responses. User Authentication with Flask-HTTPAuth Web services, like regular web applications, need to protect information and ensure that it is not given to unauthorized parties. For this reason, RIAs must ask their users for login credentials
…
url_for() calls so that fully qualified URLs are returned instead of the relative URLs that are typically used within the context of a traditional web application. This example also shows how it is possible to return “made-up” attributes in the representation of a resource. The comment_count field returns the
…
> GET A comment Note that the resources that were implemented enable a client to offer a subset of the functionality that is available through the web application. The list of supported resources could be expanded if necessary, such as to expose followers, to enable comment moderation, and to implement any other features
…
Large Resource Collections The GET requests that return a collection of resources can be extremely expensive and difficult to manage for very large collections. Like web applications, web services can choose to paginate collections. Example 14-21 shows a possible implementation of pagination for the list of blog posts. Example 14-21
…
which responses are generated and returned. After a view function executes, its response is passed to the test, which can check it for correctness. Testing Web Applications Example 15-2 shows a unit testing framework that uses the test client. Example 15-2. tests/test_client.py: Framework for tests using the
…
frustrate users, so it is important to detect and correct performance problems as soon as they appear. In this chapter, two important performance aspects of web applications are considered. Logging Slow Database Performance When application performance slowly degenerates with time, it is likely due to slow database queries, which get worse as
…
, Setting Up Logging T testing, Testing Web Services with HTTPie , Obtaining Code Coverage Reports unit tests, Unit Tests , Hashing Passwords with Werkzeug , Role Verification web applications, Testing Web Applications web services, Testing Web Services Twitter Bootstrap, Twitter Bootstrap Integration with Flask-Bootstrap U unittest, Unit Tests URL fragment, Comment Submission and Display user roles
by Dafydd Stuttard and Marcus Pinto · 30 Sep 2007 · 1,302pp · 289,469 words
I've been getting into computers ever since. vii Contents at a Glance viii Contents Introduction xxiii Chapter 1 Web Application (In)security 1 The Evolution of Web Applications 2 Common Web Application Functions 4 Benefits of Web Applications 5 Web Application Security 6 "This Site Is Secure" 7 The Core Security Problem: Users Can Submit Arbitrary Input 9 Key
…
Configuration 851 13 Follow Up Any Information Leakage 852 Index 853 Introduction This book is a practical guide to discovering and exploiting security flaws in web applications. By "web applications" we mean those that are accessed using a web browser to communicate with a web server. We examine a wide variety of different technologies
…
Java applets, ActiveX controls, Silverlight, and Flash objects. xxvi Introduction Chapters 6, 7, and 8 cover some of the most important defense mechanisms implemented within web applications: those responsible for controlling user access. Chapter 6, "Attacking Authentication," examines the various functions by which applications gain assurance of their users' identity. This
…
"Automating Customized Attacks," does not introduce any new categories of vulnerabilities. Instead, it describes a crucial technique you need to master to attack web applications effectively. Because every web application is different, most attacks are customized in some way, tailored to the application's specific behavior and the ways you have discovered to manipulate
…
information, carry out financial fraud, and perform malicious actions against other users. 4 Chapter 1 Web Application (In)security Common Web Application Functions Web applications have been created to perform practically every useful function you could possibly implement online. Here are some web application functions that have risen to prominence in recent years: ■ Shopping (Amazon) ■ Social networking (
…
Application functions and data typically are shared between the various interfaces that the application exposes to different user platforms. In addition to the public Internet, web applications have been widely adopted inside organizations to support key business functions. Many of these provide access to highly sensitive data and functionality: ■ HR applications
…
, and tracking issues. These types of functionality often involve critical security and governance issues, and organizations often rely completely on the controls built into their web applications. ■ Business applications such as enterprise resource planning (ERP) software, which previously were accessed using a proprietary thick-client application, can now be accessed using
…
grasp of the essentials of securing networks and hardening hosts, widespread confusion and misconception still exist about many of the core concepts involved in web application security. A web application developer's work increasingly involves weaving together tens, or even hundreds, of third-party packages, all designed to abstract the developer away from
…
browser. This data sails past all the organization's network defenses, in the same way as does ordinary, benign traffic to the web application. The effect of widespread deployment of web applications is that the security perimeter of a typical organization has moved. Part of that perimeter is still embodied in firewalls and bastion
…
information sharing, and also the adoption of various technologies that broadly support this functionality, including asynchronous HTTP requests and cross-domain integration. Chapter 1 i Web Application (ln)security 15 ■ Cloud computing — This term refers to greater use of external service providers for various parts of the technology stack, including application
…
items were deleted, return to step 1. Can you bypass this validation mechanism to smuggle the following data past it? "><script>alert("foo")</script> Web Application Technologies Web applications employ a myriad of technologies to implement their functionality This chapter is a short primer on the key technologies that you are likely to encounter
…
approach. Here are some examples of components commonly used for key application functions: ■ Authentication — JAAS, ACEGI ■ Presentation layer — SiteMesh, Tapestry 54 Chapter 5 i Web Application Technologies ■ Database object relational mapping — Hibernate ■ Logging — Log4J If you can determine which open source packages are used in the application you are attacking, you
…
for common application functions, which are often incorporated into wider custom-built applications: ■ Bulletin boards — PHPBB, PHP-Nuke ■ Administrative front ends — PHPMyAdmin Chapter 3 i Web Application Technologies 55 ■ Web mail — SquirrelMail, IlohaMail ■ Photo galleries — Gallery ■ Shopping carts — osCommerce, ECW-Shop ■ Wikis — MediaWiki, WakkaWikki Because PHP is free and easy to
…
"> <Account> <FromAccount>18281008</FromAccount> <Amount>1430</Amount> <C1earedFunds >False</ClearedFunds > <ToAccount>08447656</ToAccount> </Account> </pre:Add> </soap:Body> </soap:Envelope> In the context of web applications accessed using a browser, you are most likely to encounter SOAP being used by the server-side application to communicate with various back-end systems
…
of output data, the output is padded with one or two = characters. For example, here is the Base64-encoded form of The Web Application Hacker's Handbook: VGhlIFdlYiBBcHBsaWNhdGlvbiBIYWNrZXIncyBIYW5kYm9vaw== Many web applications use Base64 encoding to transmit binary data within cookies and other parameters, and even to obfuscate (that is, to hide) sensitive data to
…
you attack them. For example, sample and diagnostic scripts may contain known vulnerabilities or functionality that may be leveraged for a malicious purpose. Furthermore, many web applications incorporate common third-party components for standard functionality, such as shopping carts, discussion forums, or content management system (CMS) functions. These are often installed
…
. home TransferFunds. selectAccounts BillPayment. addPayee TransferFunds. enterAmount TransferFunds. confirmTransfer BillPayment. selectPayee WahhBank. logout Figure 4-10: A mapping of the functional paths within a web application Representing an application's functionality in this way is often more useful even in cases where the usual picture based on application pages can be
…
cfide — Cold Fusion ■ silverstream — The SilverStream web server ■ WebObjects or {function} .woa — Apple WebObjects ■ rails — Ruby on Rails Session Tokens Many web servers and web application platforms generate session tokens by default with names that provide information about the technology in use. For example: ■ jsessionid — The Java Platform ■ aspsessionid — Microsoft IIS
…
server ■ asp . NET_sessionid — Microsoft ASP.NET ■ cfid/cftoken —ColdFusion ■ PHPSESSID — PHP Third-Party Code Components Many web applications incorporate third-party code components to implement common functionality such as shopping carts, login mechanisms, and message boards. These may be open source or may
…
force ■ Integrating with a smartcard reader Typically, these kinds of actions require the use of native code components, which integrate local application functionality with web application functionality Native client components are often delivered via ActiveX controls. These are custom browser extensions that run outside the browser sandbox. Native client components may
…
the other available technologies. Design Flaws in Authentication Mechanisms Authentication functionality is subject to more design weaknesses than any other security mechanism commonly employed in web applications. Even in the apparently simple, standard model where an application authenticates users based on their username and password, shortcomings in the design of this
…
change functionality is often vulnerable by design. Vulnerabilities that are deliberately avoided in the main login function often reappear in the password change function. Many web applications' password change functions are accessible without authentication and do the following: ■ Provide a verbose error message indicating whether the requested user-name is valid. ■
…
large number of sessions being created each second, a scripted attack may succeed in identifying large numbers of other users' tokens. When testing the web application of an online retailer, the authors encountered the following sequence of session tokens: 3124538-1172764258718 3124539-1172764259062 3124540-1172764259281 3124541-1172764259734 3124542-1172764260046 3124543-1172764260156
…
those requests using the standard methodology already described, using accounts with lower privileges. Securing Access Controls Access controls are one of the easiest areas of web application security to understand, although you must carefully apply a well-informed, thorough methodology when implementing them. First, you should avoid several obvious pitfalls. These
…
overflow vulnerabilities. Chapter 16 Attacking Native Compiled Applications 645 Summary Software vulnerabilities in native code represent a relatively niche area in relation to attacks on web applications. Most applications run in a managed execution environment in which the classic software flaws described in this chapter do not arise. However, occasionally these
…
chapter examines a range of different architectural configurations and describes how you can exploit defects within application architectures to advance your attack. Tiered Architectures Most web applications use a multitiered architecture, in which the application's user interface, business logic, and data storage are divided between multiple layers, which may use
…
, for any vulnerability you identify within the application, think imaginatively about how this can be exploited to achieve your objectives. Countless successful hacks against web applications begin from a vulnerability that is intrinsically limited in its impact. By exploiting trust relationships and undercutting controls implemented elsewhere within the application, it may
…
vulnerable or malicious component to compromise the wider application. Particular attention should be paid to shared logging and administrative functions. Summary Security controls implemented within web application architectures present a range of opportunities for application owners to enhance the overall security posture of their deployment. As a consequence, defects and oversights
…
the typical pitfalls awaiting any application implementing its own native extensions, modules, or APIs, or reaching outside the application container. This chapter also examines web application firewalls, describes their strengths and weaknesses, and details ways in which they can often be circumvented to deliver attacks. Vulnerable Server Configuration Even the simplest
…
nextlnt(); return 1 + (m « 32); } } Are the application's session tokens being generated in a predictable way? Explain your answer fully. A Web Application Hacker's Toolkit Some attacks on web applications can be performed using only a standard web browser; however, the majority of them require you to use some additional tools. Many
…
a number of highly functional tool suites, each containing several interconnected tools designed to facilitate the common tasks involved in attacking a web application. Several testing suites are commonly used by web application security testers: ■ Burp Suite ■ WebScarab ■ Paros ■ Zed Attack Proxy ■ Andiparos ■ Fiddler . CAT ■i Charles These toolkits differ widely in their
…
all relevant details about the target application and providing numerous useful functions. The typical suite contains the following core components: ■ An intercepting proxy ■ A web application spider ■ A customizable web application fuzzer ■ A vulnerability scanner ■ A manual request tool ■ Functions for analyzing session cookies and other tokens ■ Various shared functions and utilities Intercepting Proxies
…
6: The proxy history, allowing you to view, filter, search, and annotate requests and responses made via the proxy 760 Chapter 20 A Web Application Hacker's Toolkit Web Application Spiders Web application spiders work much like traditional web spiders. They request web pages, parse them for links to other pages, and then request those pages
…
barriers can be effectively addressed only by systems with full-blown artificial intelligence engines, going far beyond the capabilities of today's scanners. Every Web Application Is Different Web applications differ starkly from the domain of networks and infrastructures, in which a typical installation employs off-the-shelf products in more or less standard
…
the desired state to handle a particular attack request. Chapter 14 describes techniques for achieving this within custom automated attacks. They generally Chapter 20 A Web Application Hacker's Toolkit 781 require intelligent human involvement to understand the requirements, configure the testing tools appropriately, and monitor their performance. Current Products The
…
affect different applications in different ways, depending on the types of functionality and vulnerabilities they contain. Of the various kinds of vulnerabilities commonly found within web applications, automated scanners are inherently capable of discovering approximately half of these, where a standard signature exists. Within the subset of vulnerability types that scanners
…
response being received from the server ■ The TCP connection to the server closing abruptly without returning a response 858 Chapter 21 ■ A Web Application Hacker's Methodology ■ The entire web application no longer responding ■ Unexpected data being returned by the application, possibly indicating that a string in memory has lost its null terminator 8
…
sockets, 732 URL redirection, 731-732 server-side redirection, 392 SQL injection, 291 versatility, 358 Apple iDisk Server, path traversal vulnerabilities, 690 application. See web application application architecture. See tiered architectures application logic flaws access controls vulnerabilities, 411 attack surface, 405 audit trail, 429 authentication, 415-416 avoiding, 428-429 beating
…
114 naming schemes, 85-86 brute-force exercise, 88 identifying, 87 path traversal vulnerabilities, 371 server-side functionality identification, 106-110 technology identification, 101-106 web application pages versus functional paths, 93-96 application servers. See web servers application service providers (ASPs), 656-657. See also ASP NET; cloud computing attackers, 658
…
106-110 ASP.NET, 54,103 dissecting requests, 107-108 Java, 53-54 PHP, 54-55 Ruby on Rails, 55 SQL, 55-56 web application behavior extrapolation, 109-110 web application behavior isolation, 110 web services, 56-57 XML, 56 HTTP redirection, 390-392 exploiting, 391-392 technologies application mapping identifying, 101-106 banner
by Italo Maia · 25 Jun 2015 · 157pp · 35,874 words
Table of Contents Building Web Applications with Flask Credits About the Author About the Reviewers www.PacktPub.com Support files, eBooks, discount offers, and more Why subscribe? Free access for Packt
…
ex Placing your code in a server Setting up your database Setting up the web server StackOverflow Structuring your projects Summary Postscript Index Building Web Applications with Flask * * * Building Web Applications with Flask Copyright © 2015 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or
…
and recipes for quick prototyping, he is active in the Brazilian Python communities, having open source tools and libraries available in GitHub and Bitbucket. Building Web Applications with Flask is a book written with the invaluable support of families—the Packt family, where I give special thanks to Shubhangi for her dedication
…
great guidelines such as the Zen of Python and PEP8, we have, at our disposal, a wide range of libraries and frameworks for creating great web applications, each with its own philosophy. Django, for example, is a bundle solution; it makes choices for you on how your project should look, what should
…
the chapters. Who this book is for This book targets Python developers, with some or no experience with web development, who wish to create minimalistic web applications. It is focused on those who want to become web developers as all the basics are covered to some extent, and also on those who
…
of Python, you're more than capable of understanding the examples and the chapters; at the end of the book, you will be creating amazing web applications that perform well and are easy to maintain. Conventions In this book, you will find a number of styles of text that distinguish between different
…
where is M? Flask does not provide you with an integrated model layer out-of-the-box as that is not actually needed for a web application. If you do need to work with a database, just pick your database solution from the many available and create your own model layer, which
…
model layer, although it does not restrict you in any way if you wish to create your own. If you need a simple, single-file web application that receives a form and gives back an answer, HTML or not, Flask will help you with that, easily. If you need a multilayer, high
…
Now, let's talk about awesomeness, your awesomeness after reading this book—you will be capable of handling HTTP and Ajax requests; creating fully featured web applications with database integration (SQL and NoSQL) and REST services; using Flask extensions (forms, caching, logging, debugging, auth, permissions, and so on); and modularizing and unit
…
templates. In order to create our "Hello World", we need to tell our Flask instance how to respond when a user tries to access our Web application (using a browser or whatever). For that purpose, Flask has routes. Routes are the way Flask reads a request header and decides which view should
…
to someone. We also did that. At last, we learned how to serve an HTML page and static files, which is pretty much what most Web applications do. You acquired all these skills in this chapter, and I hope the process has been quite easy but fulfilling! In the next chapter, we
…
, where True == 1. Then 5 < True is evaluated, which is certainly false. The for statement is pretty important. One can hardly think of a serious Web application that does not have to show a list of some kind at some point. The for statement can iterate over any iterable instance and has
…
block through the macro signature You can define a macro library inside a template and import only what is needed Commonly used macros in a Web application include a macro to render pagination, another to render fields, and another to render forms. You could have others, but these are pretty common use
…
chapter, we will be studying forms with Flask. Expect a lot of examples and complementary code, as forms are the doors you open from your Web application to the Web. Most problems arise from the Web, as well as most of your data. Chapter 4. Please Fill in This Form, Madam Have
…
data you wrote—comment, name, checkbox, or whatever—is encoded and sent through a protocol to the server, which then routes that information to the Web application. The Web application will validate the data origin, read the form, validate the data syntactically then semantically, and then decide what to do with it. Do you
…
input, textarea, or select element. When using input fields, always remember to name them with the attribute name as it facilitates handling them in the Web application. In the third line we have a special input field, which does not necessarily have any data to be sent, the Submit input button. By
…
form-like classes, implement fields and form validation, and include cross-source forgery protection (a nasty vulnerability that crackers may try to exploit in your Web applications). We certainly don't want that! First, to install WTForms library, use the following: pip install wtforms Now let's write some forms. A WTForms
…
to unprotect a form in the case of search fields that use the get method but are also validated with a Form. Challenges Create a Web application that receives a name and then answers: "Hello <NAME>". If the form is sent empty, an error message should be displayed. If the name given
…
is "Chuck Norris", the answer should be "Roundhouse KICK!". Create a Web application that shows an image and asks the user what he sees. The application should then validate if the answer is correct. If it is not
…
and validate our forms and how to protect our applications against CSRF attacks. In the next chapter, we'll look at how to store our Web application data in relational and non-relational databases using great, easy-to-use libraries and how to integrate them with Flask. A brief overview on databases
…
could later be lost or accessible to someone who could meddle with your "stash"? We are in the information era; information is power! In the web application world, we have two big players for data storage: relational databases and NoSQL databases. The first is the traditional way where your data is stored
…
The possibilities here are many. Why don't you try a few examples on your own now? Note The most common security problem related to web applications and databases is the SQL Injection Attack, where an attacker injects SQL instructions into your queries to the database, gaining privileges he/she should not
…
and SQLAlchemy, and how to use extensions to integrate Flask with each. Knowledge is stacking up fast! You're now capable of creating more complex web applications with database support, custom validation, CSRF protection, and user communication. In the next chapter, we'll learn about REST, its advantages, and how to create
…
, Web services and Web APIs following the REST architecture. Let's start at the beginning: what is a Web service? A Web service is a Web application that can be consulted by your application as if it was an API, improving the user experience. If your RESTful Web service does not need
…
next chapter, we'll be talking about the one way in which you can assure software quality: tests! We'll learn how to test our Web applications in the many ways that they may be tested and how to integrate these tests into our very coding routines. See you there! Chapter 7
…
cleaning the database are common ways to do that. The preceding case is common when writing scripts or desktop applications. A web application has different needs regarding the tests. A web application code usually runs in response to user interaction through a browser request and returns a response as the output. To test in
…
worry about the response HTTP code, which holds a lot of contextual meaning. To help you test your views and simulate user interaction with your web application, Flask gives you a test client tool through which you can send requests in any valid HTTP method to your application. For example, You may
…
're probably wasting time with premature optimization. And so, on to Flask. Blueprints 101 So far, our applications have all been flat: beautiful, single-file Web applications (templates and static resources not considered). In some cases, that's a nice approach; a reduced need for imports, easy to maintain with simple editors
…
counter goes up each time you reload? Well, that's the session working! Exercise How about putting our knowledge to work? Try making a shop web application, such as an online pet shop. It should have pet services, for example bathing and vet consultations, and also a small store with pet accessories
…
/), and RamNode (https://www.ramnode.com/) have whole businesses focused in providing cheap, reliable virtual machines to the public. Now, given that we have our web application ready (I mean, our Minimum Viable Product is ready), we must run the code somewhere accessible to our target audience. This usually means we need
…
to databases, one of the most basic things you should know during deployment is that it is a good practice to have your database and web application running on different (virtual) machines. You don't want them to compete for the same resources, believe me. That's why we hired two virtual
…
database mydb. We do that so that we're able to create tables, alter tables, and so on. You usually don't want your production web application database user (whoa!) to have all these privileges because, in the event of a security breach, the invader would be able to do anything to
…
your database. As one usually (coff coff never!) does not alter the database structure on user interaction, using a less privileged user with the web application is not a problem. Tip PgAdmin is an amazing, user-friendly, Postgres management application. Just use it with SSH tunneling (http://www.pgadmin.org/docs
…
recipe to quickly start a new Flask project, taking advantage of their suggested way of organizing the code. If you plan to create a large web application with Flask, you're strongly advised to take a look at at least one of these projects because they've probably already faced a few
…
-skeleton) Summary I must confess, I wrote this book for myself. It is so hard to find all the knowledge one needs to build a web application in just one place, that I had to place my notes somewhere, condensed. I hope that, if you reached this paragraph, you also feel like
by Marc Wandschneider · 18 Jun 2013
. To return to the previous page viewed, click the Back button on your device or app. Learning Node.js A Hands-On Guide to Building Web Applications in JavaScript Marc Wandschneider Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Cape Town • Sydney • Tokyo • Singapore
…
Modifying Your URL Scheme The JavaScript Loader/Bootstrapper Templating with Mustache Your Home Page Mustache Template Putting It All Together Summary Part III: Writing Web Applications 7 Building Web Applications with Express Installing Express Hello World in Express Routing and Layers in Express Routing Basics Updating Your Photo Album App for Routing REST API
…
Forms teams. As Contract Software Developer/Architect at SourceLabs, he built the SWiK open source Wiki platform. He authored PHP and MySQL LiveLessons and Core Web Application Development with PHP and MySQL. Introduction Welcome to Learning Node.js. Node.js is an exciting new platform for writing network and
…
web applications that has created a lot of buzz over the past couple of years and rapidly gathered a sizeable following in the developer community. In this
…
as well. Why Node.js? Node.js has arisen for a couple of primary reasons, which I explain next. The Web In the past, writing web applications was a pretty standard process. You have one or more servers on your machine that listens on a port (for example, 80 for HTTP), and
…
your scripts spend most of their time waiting for database servers to finish running a query—an extremely common scenario for a lot of modern web applications. Many solutions to this problem have been developed and are in common use. You can buy ever bigger and more powerful web servers with more
…
for the crown of browser king. As part of this, all these companies are investing heavily in the JavaScript portion of these systems as modern web applications continue to grow ever-more dynamic and script-based. In particular, Google Chrome’s V8 JavaScript runtime is particularly fast and also open-sourced for
…
use by anybody. With all these things in place, the opportunity arose for somebody to come along with a new approach to network (web) application development. Thus, the birth of Node.js. What Exactly Is Node.js? In 2009, a fellow named Ryan Dahl was working for a company called
…
Joyent, a cloud and virtualization services company in California. He was looking to develop push capabilities for web applications, similar to how Gmail does it, and found most of what he looked at not quite appropriate. He eventually settled on JavaScript because it lacked
…
that it is built entirely around an event-driven nonblocking model of programming. In short, you never (well, rarely) write code that blocks. If your web application—in order to process a request and generate a response—needs to run a database query, it runs the request and then tells Node.js
…
is centered around applications that are doing lots of different things with lots of different processes, servers, or services. Node.js truly shines when your web application is juggling connections to databases, caching servers, file systems, application servers, and more. The flip side of this, however, is that it’s actually not
…
writing your first Node.js programs with ease and a smile on your face! I also assume that you have a basic understanding of how web applications work: Browsers send HTTP requests to a remote server; the server processes that request and sends a response with a code indicating success or failure
…
3. Breaking Out the Big Guns—In this part, you look at some of the powerful tools and modules available to you for writing your web applications, such as help with web servers and communication with database servers. Part 4. Getting the Most Out of Node.js—Finally, I close out the
…
JavaScript Chances are, if you are reading this book, you have worked with JavaScript in the past. Perhaps you have worked on or written a web application that uses HTML, CSS, and JavaScript, and you have written some code to make the client more dynamic and interactive, either directly by manipulating the
…
: Infinity, citizenship: "man of the world" }; * * * About JSON One of the things used quite often in this book (and indeed in all the network and web applications) is JSON, or JavaScript Object Notation. This data exchange format gives you all the flexibility of a text-based data format, without the hassle that
…
be manipulated, extended, and passed around as data. Node.js takes advantage of this capability, and you will use it extensively in your network and web applications. Basics The simplest kind of function is exactly as you would expect: function hello(name) { console.log("hello " + name); } > hello("marc"); hello marc undefined > To
…
you work your way through this book, I hope you are able to see quite quickly that Node.js isn’t just for network or web applications. You can use it for everything from command-line utilities to prototyping to server management and more! Summary Switching from a model of programming, where
…
you have a better understanding of how the JavaScript language really works, it’s time to start unleashing the power of Node.js to write web applications. As I mentioned in the Introduction to this book, you will work on a small photo album website throughout this book. In this chapter, you
…
what changed. Receiving Form POST Data Although you won’t use this as much in your application, a lot of data sent to servers from web applications are sent via <form> elements, for example: Click here to view code image <form name='simple' method='post' action='http://localhost:8080'> Name: <input name
…
: null }) + "\n"); } ); var s = http.createServer(handle_incoming_request); s.listen(8080); } Starting in Chapter 6, however, when you learn how to use the express web application framework for Node, you’ll see that this functionality is typically all handled for you. Summary This chapter covered quite a lot of new material
…
. You wrote your first web application by writing a simple JSON server. I like this approach for a few key reasons: • It lets you focus on the server and the key
…
that all possible code paths (including errors) signal an event; otherwise, your Node program might hang. * * * Assembling Content on the Client: Templates In more traditional web application models, the client sends an HTTP request to the server, the server gathers all the data and generates the HTML response, and it sends that
…
stuff at you in the preceding sections, so stop now and make this all run. You should now have the following file layout for your web application: Click here to view code image + project_root/ server.js // GitHub source basic.html // Listing 6.1 + content/ home.js // Listing 6.2 album.js
…
in the browser Summary This chapter introduced two key Node.js features, streams and events, that you used to serve up static content from your web application. Equally importantly, this chapter introduced client-side template engines, and you used Mustache to put together a simple start to a front-end for your
…
with little code. You will do so using the Express Application Framework for Node. Part III: Writing Web Applications 7 Building Web Applications with Express 8 Databases I: NoSQL (MongoDB) 9 Databases II: SQL (MySQL) 7. Building Web Applications with Express Thus far, you have been learning the fundamentals and core concepts of Node.js; armed
…
to write a lot of code to do some reasonably basic things. It’s time to change gears a bit and start building more interesting web applications, using one of the biggest strengths of Node: the huge collection of libraries and modules available to you through npm. Now that you understand the
…
time to start finding ways to make your life significantly easier and your development much faster. In this chapter, you start working with express, a web application framework for Node. It takes care of many of the basic tasks you learned about in previous chapters, and even exposes some powerful new functionality
…
, the server.js file has left only the functions for serving static content, which you can view in the GitHub source for Chapter 7, “Building Web Applications with Express,” in the handlers_as_modules/ project folder. The application should have the same functionality as before, but is now much more modularized and
…
the little app into something more useful. 8. Databases I: NoSQL (MongoDB) Now that you have a solid foundation for your web application and are fully set up with the express web application framework and Mustache templating, you are ready to spend a couple of chapters adding a back end to it. In these
…
of the photo album application that uses MongoDB as its data store for albums and photos, but also a couple more interesting pages in your web application for creating albums and uploading photos to the server. The only problem is that anybody can view and use these pages and APIs to manipulate
…
source variants, MySQL and PostgreSQL. The good news is that the asynchronous nature of Node.js meshes perfectly well with using these databases in your web applications, and there is good npm module support for most of them. In this chapter, I cover using MySQL with Node, using the mysql module from
…
be limited to making connections to the MySQL server and executing these queries and statements. This gives you more than enough to run your straightforward web applications and extract much of the power of the database server. Connecting To connect to the remote server, you create a connection via the mysql module
…
/users.json', user_hdlr.register); app.post('/service/login', user_hdlr.login); The first is the CRUD method (see “API Design” in Chapter 7, “Building Web Applications with Express”) for creating users through the API. The second is the way you support logins and authentication for the web browser version of the
…
) { if (!err && resp) { next(); } else need_auth(req, res); } ); } else need_auth(req, res); } The code works as follows: 1. To maintain compatibility with the web application, you check to see whether the user has already logged in using sessions in the browser. If so, this user is clear to use any
…
use of a nice little program called nssm.exe (the Non-Sucking Service Manager) and an npm module called winser, you can install your Node web applications as services and manage them fully through the Windows Management Console. To set this up, you need to do two things: 1. Install a new
…
custom action in the package.json for the web application. 2. Download and install winser and have it do its work. For the first step, you just need to add the following to the package
…
servers? You can solve this problem by implementing a simple round-robin load balancer that is given a list of node servers running your particular web application. You then redirect incoming requests to your domain to these other servers, one at a time. You can, of course, experiment with more advanced strategies
…
use them effectively: The session data is currently stored per process using local MemoryStore objects (see “POST Data, Cookies, and Sessions” in Chapter 7, “Building Web Applications with Express”). This creates a rather serious problem, as shown in Figure 10.2. Figure 10.2. Multiple instances of the servers and session data
…
fetch the correct information, no matter where the request is processed. Virtual Hosting Running multiple websites on one server has been a major requirement of web application platforms for many years now, and fortunately Node.js offers a couple of very workable solutions here for you when you build your apps with
…
Server Support Although it’s cool that express has built-in support for virtual hosts, I worry a bit about the risks of having multiple web applications running within one process. If any one starts to misbehave or have problems, any number of your sites can start to have problems as well
…
almost fanatical about performance, and these components are sufficiently lightweight that they shouldn’t add much perceptible delay in the processing of requests for your web applications. Multiplatform Development One of the great strengths of Node.js is not only its strong support for UNIX and Mac-like computers, but also its
…
Node applications and run them in production environments, investing execution scripts, load balancing, and multiprocess applications. This chapter also showed you how to secure your web applications using HTTPS over SSL, and finally described multiplatform development, showing that it’s not nearly as scary as you might fear. You now have a
…
the readline object to exit the program. Working with Processes One other thing you can do from the command line (or even from within your web applications) in Node is to launch other programs. You have a couple of options for this using the child_process module, with varying degrees of complexity
…
, 183-187 paging functionality, adding, 80-82 structure of, 187 testing, 258-262 updating for routing, 141-144 Reverse Polish Notation calculator, testing, 255-258 web applications HTTP Basic Authentication, 157-158 node servers, launching, 220 PUT and DELETE, browser support for, 155-156 web browser applications, client-side templates, 121 arrays
…
-11 version of Node.js, displaying, 11 virtual hosting, 224-227 proxy server support, 227 testing, 225 VowsJS, 254 W watch command (Node debugger), 20 web applications DELETE, browser support for, 155-156 HTTP Basic Authentication, 157-158 node servers, launching, 220 PUT, browser support for, 155-156 virtual hosting, 224-227
by James Ashton · 11 May 2023 · 401pp · 113,586 words
Newton, the NC was ahead of its time. Whereas Arm had bigger opportunities to pursue, Acorn desperately needed a hit. The NC attempted to run web applications instead of installed software, but long before regular internet access was good enough to support the idea. His partners suspected Ellison lost interest early on
by David G. W. Birch and Victoria Richardson · 28 Apr 2024 · 249pp · 74,201 words
user authentication across different applications and platforms. It simplifies the login process, enhances security and respects user privacy, making it a popular choice for modern web applications and services. OIDC also powers social logins (sign in with Facebook, Google, etc.), and we think its widespread adoption is interesting because it provides a
by Guillaume Gomez and Antoni Boucher · 11 Jan 2018 · 537pp · 82,938 words
know how concurrency works in Rust and use concurrency primitives such as threads and message passing Use syntax extensions and write your own Create a Web application with Rocket Use Diesel to build safe database abstractions Leave a review - let other readers know what you think Please share your thoughts on this
by Sau Sheong Chang · 27 Jun 2012
by Martin Odersky, Lex Spoon and Bill Venners · 15 Jan 2008 · 754pp · 48,930 words
by Robert X. Cringely · 1 Jun 2014 · 232pp · 71,024 words
by Andrew Palmer · 13 Apr 2015 · 280pp · 79,029 words
by Mark Last, Abraham Kandel and Horst Bunke · 24 Jun 2004 · 205pp · 20,452 words
by Vaughn Vernon · 16 Aug 2015
by Callum Macrae · 23 Feb 2018 · 296pp · 41,381 words
by Paul Chiusano and Rúnar Bjarnason · 13 Sep 2014
by Veljko Krunic · 29 Mar 2020
by Alex MacCaw · 1 Jan 2012 · 59pp · 12,801 words
by Marc Bodmer · 11 Feb 2013 · 48pp · 10,481 words
by Will Larson · 19 May 2019 · 227pp · 63,186 words
by Mike Cohn · 1 Mar 2004 · 270pp · 75,626 words
by Marianne Bellotti · 17 Mar 2021 · 232pp · 71,237 words
by Mark Summerfield · 27 Oct 2007 · 643pp · 53,639 words
by Marko Gargenta · 11 Mar 2011 · 378pp · 67,804 words
by Lee Atchison · 25 Jul 2016 · 255pp · 55,018 words
by Venkat Subramaniam · 1 May 2009 · 226pp · 17,533 words
by Kristina Chodorow and Michael Dirolf · 23 Sep 2010 · 352pp · 64,282 words
by Mitchel Kelonye · 19 Oct 2014 · 266pp · 38,397 words
by Rick Copeland · 4 Jun 2008 · 357pp · 63,071 words
by Bruce Schneier · 7 Feb 2023 · 306pp · 82,909 words
by Justin Seitz · 15 Feb 2009 · 312pp · 52,762 words
by Bryan O'Sullivan, John Goerzen, Donald Stewart and Donald Bruce Stewart · 2 Dec 2008 · 1,065pp · 229,099 words
by Matthew Skelton and Manuel Pais · 16 Sep 2019
by Donald Sull and Kathleen M. Eisenhardt · 20 Apr 2015 · 294pp · 82,438 words
by Jon Loeliger and Matthew McCullough · 14 Aug 2012
by Chris Vander Mey · 23 Aug 2012 · 231pp · 71,248 words
by Francesco Cesarini · 496pp · 70,263 words
by Michael Feathers · 14 Jul 2004 · 508pp · 120,339 words
by Anson-QA
by Daniel Kellmereit and Daniel Obodovski · 19 Sep 2013 · 138pp · 40,787 words
by Betsy Beyer, Chris Jones, Jennifer Petoff and Niall Richard Murphy · 15 Apr 2016 · 719pp · 181,090 words
by Zigurd Mednieks, Laird Dornin, G. Blake Meike and Masumi Nakamura · 15 Jul 2011
by Martin Kleppmann · 17 Apr 2017
by Unknown · 2 Jan 2010 · 448pp · 71,301 words
by Martin L. Abbott and Michael T. Fisher · 1 Dec 2009
by Erik Westra · 23 May 2013
by Clara Shih · 30 Apr 2009 · 255pp · 76,495 words
by Andrea Passaglia · 27 Apr 2017 · 550pp · 84,515 words
by Mark Lutz · 5 Jan 2011
by Jenifer Tidwell · 15 Dec 2010
by Federico Biancuzzi and Shane Warden · 21 Mar 2009 · 496pp · 174,084 words
by Ian Robinson, Jim Webber and Emil Eifrem · 13 Jun 2013 · 201pp · 63,192 words
by Steve McConnell · 8 Jun 2004 · 1,758pp · 342,766 words
by Max Humber · 156pp · 15,746 words
by Antano Solar John, Jonathan Rockway and Solar John Antano · 15 Nov 2010
by Adam Freeman · 25 Mar 2014 · 671pp · 228,348 words
by Rodrigo Branas · 20 Aug 2014 · 180pp · 37,187 words
by Michael Dory, Adam Parrish and Brendan Berg · 29 Sep 2011 · 136pp · 20,501 words
by James Sugrue · 15 Dec 2013 · 290pp · 119,172 words
by Patrick Mulder · 18 Jun 2014 · 190pp · 52,865 words
by David Sulc · 244pp · 20,327 words
by Addy Osmani · 21 Jul 2012 · 420pp · 79,867 words
by Stuart Russell · 7 Oct 2019 · 416pp · 112,268 words
by Rennay Dorasamy · 2 Dec 2021 · 328pp · 77,877 words
by Scott E. Page · 27 Nov 2018 · 543pp · 153,550 words
by Drew Neil
by Drew Neil
by Imran Bashir · 28 Mar 2018
by Temple Grandin, Ph.d. · 11 Oct 2022
by Andreas M. Antonopoulos and Gavin Wood Ph. D. · 23 Dec 2018 · 960pp · 125,049 words
by Dipanjan Sarkar · 1 Dec 2016
by L.G. Meredith · 214pp · 14,382 words
by Marijn Haverbeke · 15 Nov 2018 · 560pp · 135,629 words
by Eric Redmond, Jim Wilson and Jim R. Wilson · 7 May 2012 · 713pp · 93,944 words
by Frank Zammetti · 7 Jul 2009 · 602pp · 207,965 words
by Shea Frederick · 19 Dec 2008 · 324pp · 87,064 words
by Jan Erik Solem · 26 Jun 2012
by Mehmed Kantardzić · 2 Jan 2003 · 721pp · 197,134 words
by Jeff Forcier
by Lorne Lantz and Daniel Cawrey · 8 Dec 2020 · 434pp · 77,974 words
by Brad Green and Shyam Seshadri · 15 Mar 2013 · 196pp · 58,122 words
by Niall O’Higgins · 66pp · 9,247 words
by Jon Hicks · 23 Jun 2011
by Fred Vogelstein · 12 Nov 2013 · 275pp · 84,418 words
by Lars George · 29 Aug 2011
by Andrew Cumming and Gordon Russell · 28 Nov 2006 · 696pp · 111,976 words
by Christopher Allen and Julie Moronuki · 1 Jan 2015 · 1,076pp · 67,364 words
by Alasdair Gilchrist · 27 Jun 2016
by Brian P. Hogan · 29 Feb 2012 · 122pp · 19,807 words
by Thomas A. Limoncelli, Strata R. Chalup and Christina J. Hogan · 27 Aug 2014 · 757pp · 193,541 words
by Matt Copperwaite and Charles Leifer · 26 Nov 2015
by Nilanjan Raychaudhuri · 27 Mar 2012
by Jason Lengstorf and Phil Leggetter · 20 Feb 2013
by Trey Grainger and Timothy Potter · 14 Sep 2014 · 1,085pp · 219,144 words
by Benjamin H. Bratton · 19 Feb 2016 · 903pp · 235,753 words
by James Turnbull · 1 Dec 2014 · 514pp · 111,012 words
by Regina O. Obe and Leo S. Hsu · 2 May 2015
by David B. Copeland · 6 Apr 2012 · 408pp · 63,990 words
by Unknown · 13 Jan 2012 · 470pp · 109,589 words
by Marc Nager, Clint Nelsen and Franck Nouyrigat · 8 Nov 2011 · 179pp · 42,006 words
by Matthew A. Russell · 15 Jan 2011 · 541pp · 109,698 words
by Neal Ford · 8 Dec 2008 · 224pp · 48,804 words
by Andy Oram and John Viega · 15 Dec 2009 · 302pp · 82,233 words
by Joshua B. Smith · 30 Sep 2006
by Toby Segaran and Jeff Hammerbacher · 1 Jul 2009
by Amy Brown and Greg Wilson · 24 May 2011 · 834pp · 180,700 words
by Frank J. Ohlhorst · 28 Nov 2012 · 133pp · 42,254 words
by Jason Myers and Rick Copeland · 27 Nov 2015 · 458pp · 46,761 words
by Timothy Budd · 17 Feb 2009 · 263pp · 20,730 words
by Fabio Nelli · 27 Sep 2018 · 688pp · 107,867 words
by Kevin C. Baird · 1 Jun 2007 · 309pp · 65,118 words
by Mark Hurst · 15 Jun 2007 · 153pp · 52,175 words
by Jono Bacon · 1 Aug 2009 · 394pp · 110,352 words
by M. Omar Faruque Sarker · 15 Feb 2014 · 234pp · 57,267 words
by Heather Adkins, Betsy Beyer, Paul Blankinship, Ana Oprea, Piotr Lewandowski and Adam Stubblefield · 29 Mar 2020 · 1,380pp · 190,710 words
by John Arundel · 25 Aug 2013 · 274pp · 58,675 words
by Peter Gutmann
by Melanie Swan · 22 Jan 2014 · 271pp · 52,814 words
by Arvid Kahl · 24 Jun 2020 · 461pp · 106,027 words
by W. Richard Stevens, Bill Fenner, Andrew M. Rudoff · 8 Jun 2013
by Eric S. Raymond · 22 Sep 2003 · 612pp · 187,431 words
by James Higginbotham · 20 Dec 2021 · 283pp · 78,705 words
by Harihara Subramanian · 31 Jan 2019 · 422pp · 86,414 words
by James Turnbull · 13 Jul 2014 · 265pp · 60,880 words
by Nigel Poulton · 10 May 2020
by David Golumbia · 31 Mar 2009 · 268pp · 109,447 words
by Robert C. Martin · 1 Jan 2007 · 462pp · 172,671 words
by Kyle Merrifield Mew · 3 Aug 2011 · 272pp · 52,204 words
by Sean Kane and Karl Matthias · 14 May 2023 · 433pp · 130,334 words
by Ben Grynhaus, Jordan Hudgens, Rayon Hunte, Matthew Thomas Morgan and Wekoslav Stefanovski · 28 Jul 2021 · 739pp · 174,990 words
by Adam Freeman
by Jeff Nickoloff and Stephen Kuenzli · 10 Dec 2019 · 629pp · 109,663 words
by Ron Jeffries · 14 Aug 2015 · 444pp · 118,393 words
by Sean P. Kane and Karl Matthias · 15 Mar 2018 · 350pp · 114,454 words
by Boris Cherny · 16 Apr 2019 · 629pp · 83,362 words
by Q. Ethan McCallum · 14 Nov 2012 · 398pp · 86,855 words
by Jacqueline Kazil · 4 Feb 2016
by Mark Bauerlein · 7 Sep 2011 · 407pp · 103,501 words
by Jonathan Zittrain · 27 May 2009 · 629pp · 142,393 words
by Rob Kitchin,Tracey P. Lauriault,Gavin McArdle · 2 Aug 2017
by Clif Flynt · 18 May 2003 · 792pp · 48,468 words
by Greg Nudelman and Pabini Gabriel-Petit · 8 May 2011
by Martin Kleppmann · 16 Mar 2017 · 1,237pp · 227,370 words
by Nancy Duarte · 15 Nov 2008 · 297pp · 35,674 words
by Scott Rosenberg · 2 Jan 2006 · 394pp · 118,929 words
by Gourav Shah · 29 Jul 2015 · 178pp · 33,275 words
by Ali Tamaseb · 14 Sep 2021 · 251pp · 80,831 words
by Taylor Pearson · 27 Jun 2015 · 168pp · 50,647 words
by Adam Duvander · 14 Aug 2010 · 415pp · 95,261 words
by John Verzani · 18 Sep 2011 · 99pp · 19,884 words
by Nicole Perlroth · 9 Feb 2021 · 651pp · 186,130 words
by Alan Berg · 15 Mar 2012 · 372pp · 67,140 words
by Jonathan Gray, Lucy Chambers and Liliana Bounegru · 9 May 2012
by Jeff Atwood · 3 Jul 2012 · 270pp · 64,235 words
by Joel Spolsky · 1 Aug 2004 · 370pp · 105,085 words
by Fabio Alessandro Locati · 21 Nov 2016
by Mark Bates · 2 Jun 2012 · 323pp · 65,306 words
by William Mougayar · 25 Apr 2016 · 161pp · 44,488 words
by Simon St.Laurent and J. David Eisenberg · 20 Dec 2016
by Ashutosh Deshmukh · 13 Dec 2005
by Eric O'Neill · 1 Mar 2019 · 299pp · 88,375 words
by Susan Cain · 24 Jan 2012 · 377pp · 115,122 words
by Joel Spolsky · 25 Jun 2008 · 292pp · 81,699 words
by Zed Shaw · 1 Jan 2010 · 249pp · 45,639 words
by Gary Marcus and Jeremy Freeman · 1 Nov 2014 · 336pp · 93,672 words
by Wolfgang Barth · 25 May 2006
by Bill Scott and Theresa Neil · 15 Dec 2008 · 504pp · 67,845 words
by Sam Newman · 25 Dec 2014 · 540pp · 103,101 words
by Brett King · 26 Dec 2012 · 382pp · 120,064 words
by Raphaal Hertzog and Roland Mas · 24 Dec 2013 · 678pp · 159,840 words
by Christian Crumlish and Erin Malone · 30 Sep 2009 · 518pp · 49,555 words
by Steven Levy · 25 Feb 2020 · 706pp · 202,591 words
by Joshua Porter · 18 May 2008 · 201pp · 21,180 words
by Dan Wellman · 14 Aug 2011
by Jonathan Bush and Stephen Baker · 14 May 2014 · 238pp · 68,914 words
by Mark Masse · 19 Oct 2011 · 153pp · 27,424 words
by Noah Gift and Jeremy M. Jones · 29 Jun 2009 · 603pp · 141,814 words
by Gabe Zichermann and Christopher Cunningham · 14 Aug 2011 · 145pp · 40,897 words
by Zachary Kessin · 9 May 2011 · 210pp · 42,271 words
by Jiawei Han, Micheline Kamber and Jian Pei · 21 Jun 2011
by Matt Behrens · 24 Jan 2015
by Jane McGonigal · 20 Jan 2011 · 470pp · 128,328 words
by Julie Steele · 20 Apr 2010
by Jim Waldo · 193pp · 31,998 words
by Drew Neil · 6 Oct 2012 · 722pp · 90,903 words
by Scott J. Shapiro · 523pp · 154,042 words
by David Kadavy · 5 Sep 2011 · 276pp · 78,094 words
by Andy Oram · 26 Feb 2001 · 673pp · 164,804 words
by David Smiley and Eric Pugh · 15 Nov 2009 · 648pp · 108,814 words
by Peter Seibel · 22 Jun 2009 · 1,201pp · 233,519 words
by Shelley Powers · 23 Jul 2010 · 1,038pp · 137,468 words
by Brian W. Fitzpatrick and Ben Collins-Sussman · 6 Jul 2012 · 209pp · 54,638 words
by Steven Osborn · 17 Sep 2013 · 310pp · 34,482 words
by James Higginbotham · 14 Apr 2015 · 39pp · 10,453 words
by W. Curtis Preston · 9 Feb 2009 · 1,266pp · 278,632 words
by Michael Schwarz, Jeremy Anderson and Peter Curtis · 7 May 2002
by Vadim Mirgorod · 25 Aug 2013
by Michael Balderas · 7 Mar 2011 · 124pp · 25,026 words
by Stuart McClure, Joel Scambray and George Kurtz · 15 Feb 2001 · 260pp · 40,943 words
by David Beazley and Brian K. Jones · 9 May 2013 · 1,606pp · 168,061 words
by Ian F. Darwin · 9 Apr 2012 · 960pp · 140,978 words
by Scott Donaldson, Stanley Siegel and Gary Donaldson · 13 Jan 2012 · 458pp · 135,206 words
by Ryan Boyd · 29 Feb 2012 · 91pp · 18,831 words
by Bob Ducharme · 15 Jul 2011 · 315pp · 70,044 words
by Pedro Teixeira · 30 Sep 2012 · 325pp · 85,599 words
by Stuart Halloway and Aaron Bedra · 17 Apr 2012 · 536pp · 73,482 words
by Toby Segaran · 17 Dec 2008 · 519pp · 102,669 words
by Chas Emerick, Brian Carper and Christophe Grand · 15 Aug 2011 · 999pp · 194,942 words
by Lisa Crispin and Tip House · 15 Apr 2003 · 448pp · 84,462 words
by William H. Inmon, Bonnie K. O'Neil and Lowell Fryman · 15 Feb 2008 · 314pp · 94,600 words
by Tom White · 29 May 2009 · 933pp · 205,691 words
by Bruce Schneier · 3 Sep 2018 · 448pp · 117,325 words
by Rob Walling · 15 Jan 2010 · 183pp · 49,460 words
by Harry J. W. Percival · 10 Jun 2014 · 779pp · 116,439 words
by Richard Petersen · 15 May 2015
by Axel Rauschmayer · 3 Oct 2015
by Tim O'Reilly · 9 Oct 2017 · 561pp · 157,589 words
by Jeremy Rifkin · 31 Mar 2014 · 565pp · 151,129 words
by Michael A. Cusumano, Annabelle Gawer and David B. Yoffie · 6 May 2019 · 328pp · 84,682 words
by Valliappa Lakshmanan, Sara Robinson and Michael Munn · 31 Oct 2020
by Justin Schuh · 20 Nov 2006 · 2,054pp · 359,149 words
by Jessica Livingston · 14 Aug 2008 · 468pp · 233,091 words
by Christopher Schmitt and Kyle Simpson · 13 Sep 2011 · 435pp · 62,013 words
by Pete Warden · 20 Sep 2011 · 58pp · 12,386 words
by Chet Haase · 12 Aug 2021 · 580pp · 125,129 words
by Alan Weisman · 21 Apr 2025 · 599pp · 149,014 words
by Christopher Wylie · 8 Oct 2019
by David N. Blank-Edelman · 16 Sep 2018
by Jennifer Pahlka · 12 Jun 2023 · 288pp · 96,204 words
by Garr Reynolds · 15 Jan 2012
by Jamie L. Mitchell and Rex Black · 15 Feb 2015
by Olivier Cure and Guillaume Blin · 10 Dec 2014
by Sonja Thiel and Johannes C. Bernhardt · 31 Dec 2023 · 321pp · 113,564 words
by Anthony T. Holdener · 25 Jan 2008 · 982pp · 221,145 words
by E. Gabriella Coleman · 25 Nov 2012 · 398pp · 107,788 words
by Nicholas C. Zakas · 15 Mar 2010 · 375pp · 66,268 words
by Douglas Crockford · 15 Nov 2008 · 273pp · 46,214 words
by Felix Frank · 20 Nov 2014 · 234pp · 63,522 words
by Timothy Ferriss · 14 Jun 2017 · 579pp · 183,063 words
by Regina Obe and Leo Hsu · 5 Jul 2012 · 205pp · 47,169 words
by Adam Goucher and Tim Riley · 13 Oct 2009 · 351pp · 123,876 words
by Nadia Eghbal · 3 Aug 2020 · 1,136pp · 73,489 words
by Michael Schrenk · 19 Aug 2009 · 371pp · 78,103 words
by Antonio Cangiano · 15 Mar 2012 · 315pp · 85,791 words
by Chris Skinner · 27 Aug 2013 · 329pp · 95,309 words
by Steve Fulton and Jeff Fulton · 2 May 2013 · 1,881pp · 178,824 words
by Mitchell Hashimoto · 29 May 2013 · 192pp · 44,789 words
by Steven Levy · 12 Apr 2011 · 666pp · 181,495 words
by Stuart Sierra and Luke Vanderhart · 24 Oct 2012 · 135pp · 31,098 words
by Rakesh Vidya Chandra and Bala Subrahmanyam Varanasi · 16 Jun 2015 · 134pp · 29,488 words
by Valery Kholodkov · 21 Jul 2015 · 174pp · 34,672 words
by Wolfgang Barth · 19 Aug 2009 · 996pp · 180,520 words
by Clement Nedelcu · 18 Jul 2013 · 319pp · 72,969 words
by Andrew B. King · 15 Mar 2008 · 597pp · 119,204 words
by Lorin Hochstein · 8 Dec 2014 · 761pp · 80,914 words
by Jeff Geerling · 9 Oct 2015 · 313pp · 75,583 words
by Bob Ducharme · 22 Jul 2011 · 511pp · 111,423 words
by Dave Thomas, Chad Fowler and Andy Hunt · 15 Dec 2000 · 936pp · 85,745 words
by Alistair Croll and Benjamin Yoskovitz · 1 Mar 2013 · 567pp · 122,311 words
by Eric Enge, Stephan Spencer, Jessie Stricchiola and Rand Fishkin · 7 Mar 2012
by Mike Cantelon, Marc Harter, Tj Holowaychuk and Nathan Rajlich · 27 Jul 2013 · 628pp · 107,927 words
by Pedro Gairifo Santos · 7 Nov 2011 · 353pp · 104,146 words
by Jason Fried, David Heinemeier Hansson, Matthew Linderman and 37 Signals · 1 Jan 2006 · 132pp · 31,976 words
by Leslie Sikos · 10 Jul 2015
by Brenda Jin, Saurabh Sahni and Amir Shevat · 28 Aug 2018
by John Doerr · 23 Apr 2018 · 280pp · 71,268 words
by Diomidis Spinellis and Georgios Gousios · 30 Dec 2008 · 680pp · 157,865 words
by Mike Linksvayer, Michael Mandiberg and Mushon Zer-Aviv · 24 Aug 2010 · 188pp · 9,226 words
by Jure Leskovec, Anand Rajaraman and Jeffrey David Ullman · 13 Nov 2014
by Marc Goodman · 24 Feb 2015 · 677pp · 206,548 words
by Robert Daigneau · 14 Sep 2011
by Scott Chacon and Ben Straub · 12 Nov 2014 · 549pp · 134,988 words
by Unknown
by Pieter Hintjens · 11 Mar 2013 · 349pp · 114,038 words
by Julian Guthrie · 15 Nov 2019
by Jan Kunigk, Ian Buss, Paul Wilkinson and Lars George · 8 Jan 2019 · 1,409pp · 205,237 words
by Gordon Bell and Jim Gemmell · 15 Feb 2009 · 291pp · 77,596 words
by Kevin Mitnick, Mikko Hypponen and Robert Vamosi · 14 Feb 2017 · 305pp · 93,091 words
by Ben Tarnoff · 13 Jun 2022 · 234pp · 67,589 words
by Regina O. Obe and Leo S. Hsu · 2 May 2015
by Rafeeq Ur Rehman · 7 May 2003 · 257pp · 64,973 words
by William Hertling · 9 Apr 2014 · 247pp · 71,698 words
by Diane Coyle · 21 Feb 2011 · 523pp · 111,615 words
by Jared R. Richardson and William A. Gwaltney · 15 Mar 2005 · 203pp · 14,242 words
by Alistair Cockburn · 30 Sep 2000
by Cameron Buchanan, Terry Ip, Andrew Mabbitt, Benjamin May and Dave Mound · 28 Jun 2015 · 224pp · 45,431 words
by Luke Wroblewski · 4 Oct 2011 · 95pp · 23,041 words
by David Sawyer McFarland · 28 Oct 2011 · 924pp · 196,343 words
by Gary Price, Chris Sherman and Danny Sullivan · 2 Jan 2003 · 481pp · 121,669 words
by Dave Gray and Thomas Vander Wal · 2 Dec 2014 · 372pp · 89,876 words
by David Flanagan · 15 Dec 2010 · 211pp · 37,094 words
by Ryan Mitchell · 14 Jun 2015 · 255pp · 78,207 words
by Tim Harford · 1 Jun 2011 · 459pp · 103,153 words
by P. W. Singer and Allan Friedman · 3 Jan 2014 · 587pp · 117,894 words
by Axel Rauschmayer · 25 Feb 2014 · 692pp · 95,244 words
by Vishen Lakhiani · 14 Sep 2020
by Peter H. Diamandis and Steven Kotler · 3 Feb 2015 · 368pp · 96,825 words
by Richard Watson · 5 Nov 2013 · 219pp · 63,495 words
by Colin Bryar and Bill Carr · 9 Feb 2021 · 302pp · 100,493 words
by Jeff Lawson · 12 Jan 2021 · 282pp · 85,658 words
by Jeremy Heimans and Henry Timms · 2 Apr 2018 · 416pp · 100,130 words
by Cal Newport · 2 Mar 2021 · 350pp · 90,898 words
by Dan Senor and Saul Singer · 3 Nov 2009 · 285pp · 81,743 words
by Steve Klabnik and Carol Nichols · 27 Feb 2023 · 648pp · 183,275 words
by Ken Pepple · 26 Jul 2011 · 90pp · 17,297 words
by Tim Berners-Lee · 8 Sep 2025 · 347pp · 100,038 words
by Cal Newport · 17 Sep 2012 · 197pp · 60,477 words
by Chris Guillebeau · 7 May 2012 · 248pp · 72,174 words
by Dustin Boswell and Trevor Foucher · 14 Sep 2010
by Christine Lagorio-Chafkin · 1 Oct 2018
by Christophe Porteneuve · 15 Nov 2010 · 141pp · 9,896 words
by Daniel Suarez · 1 Dec 2006 · 562pp · 146,544 words
by Ivan Idris · 30 Sep 2012 · 197pp · 35,256 words
by Michael Lopp · 20 Jul 2010 · 336pp · 88,320 words
by Aarron Walter · 4 Oct 2011 · 89pp · 24,277 words
by Daniel Hall · 29 Apr 2015 · 132pp · 28,815 words
by Jeremy Keith · 2 Jan 2010 · 73pp · 17,793 words
by Karl Fogel · 13 Oct 2005
by Andy Greenberg · 15 Nov 2022 · 494pp · 121,217 words
by John Walker
by Matthew A. Russell · 15 Feb 2011 · 71pp · 14,237 words
by Peter Gasston · 14 Apr 2011 · 502pp · 82,170 words
by Lam Thuy Vo · 21 Nov 2019 · 237pp · 65,794 words
by Alex Howard · 21 Feb 2012 · 25pp · 5,789 words
by Kevin Poulsen · 22 Feb 2011 · 264pp · 79,589 words
by Siva Vaidhyanathan · 1 Jan 2010 · 281pp · 95,852 words
by Aaron Swartz and Lawrence Lessig · 5 Jan 2016 · 377pp · 110,427 words
by Reid Hoffman and Chris Yeh · 14 Apr 2018 · 286pp · 87,401 words
by Steven Sloman · 10 Feb 2017 · 313pp · 91,098 words
by Guillaume Pitron · 14 Jun 2023 · 271pp · 79,355 words
by Madhumita Murgia · 20 Mar 2024 · 336pp · 91,806 words
by Parmy Olson · 5 Jun 2012 · 478pp · 149,810 words
by Scott Murray · 15 Mar 2013 · 186pp · 50,651 words
by Michael Peacock · 26 Feb 2015 · 161pp · 30,412 words
by Lee Phillips · 15 Feb 2012 · 199pp · 47,154 words
by Gabriel Weinberg and Justin Mares · 5 Oct 2015 · 232pp · 63,846 words
by Henry Nicholls · 1 Mar 2018 · 367pp · 102,188 words
by Eric Sarrion · 15 Feb 2012 · 280pp · 40,881 words
by John Cheney-Lippold · 1 May 2017 · 420pp · 100,811 words
by Brian Krebs · 18 Nov 2014 · 252pp · 75,349 words
by Brian Dumaine · 11 May 2020 · 411pp · 98,128 words
by J.D. Roth · 18 Mar 2010 · 519pp · 118,095 words
by Jon Bruner · 27 Mar 2013 · 49pp · 12,968 words
by Virginia Eubanks · 1 Feb 2011 · 289pp · 99,936 words
by Matthew Hindman · 24 Sep 2018
by Eileen Ormsby · 1 Nov 2014 · 269pp · 79,285 words
by Sarah Lacy · 6 Jan 2011 · 269pp · 77,876 words
by Micah L. Sifry · 19 Feb 2011 · 212pp · 49,544 words
by Jonathan Taplin · 17 Apr 2017 · 222pp · 70,132 words
by Cal Newport · 5 Jan 2016
by Dominic Frisby · 1 Nov 2014 · 233pp · 66,446 words
by Steve Sammartino · 25 Jun 2014 · 247pp · 81,135 words
by Dan Cederholm · 14 May 2013 · 62pp · 15,274 words
by Steve Krug · 2 Jan 2000 · 170pp · 42,196 words
by Dan Lyons · 22 Oct 2018 · 252pp · 78,780 words
by Luke Harding · 7 Feb 2014 · 266pp · 80,018 words
by Manuel Castells · 19 Aug 2012 · 291pp · 90,200 words
by Joanne McNeil · 25 Feb 2020 · 239pp · 80,319 words
by Paul Jarvis · 1 Jan 2019 · 258pp · 74,942 words
by Mikkel Svane and Carlye Adler · 13 Nov 2014 · 220pp
by Jason Fried and David Heinemeier Hansson · 1 Oct 2018 · 117pp · 30,538 words
by Paul Adams · 1 Nov 2011 · 123pp · 32,382 words