21.03.2013 Views

Problem - Kevin Tafuro

Problem - Kevin Tafuro

Problem - Kevin Tafuro

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

This book doesn’t always force you to do the secure thing.<br />

Some people would rather we take the approach of showing you one right way<br />

to do the few things you should be doing in your applications. For example, we<br />

could simply cover ways to create a secure channel, instead of talking about all<br />

the different low-level cryptographic primitives and the many ways to use them.<br />

We do provide a lot of high-level solutions that we’d strongly prefer you use. On<br />

the other hand, we have consulted on so many real-world systems that we know<br />

all too well that some people need to trade off the absolute best security possible<br />

for some other requirement. The whole security game is about risk mitigation,<br />

and it’s up to you to decide what your acceptable levels of risk are. We<br />

have tried to accommodate people who may have nonstandard requirements,<br />

and to teach those people the risks involved in what they’re doing. If we simply<br />

provide high-level solutions, many people won’t use them, and will continue to<br />

build their own ad hoc solutions without adequate guidance.<br />

This book could be friendlier to Windows developers.<br />

In general, we cover the native Win32 API, rather than the variety of other API<br />

sets that Microsoft offers, such as ATLand MFC. It would simply be infeasible to<br />

cover all of them, so we’ve opted to cover the one that everything else builds on.<br />

We’re sorry if you have to go to a lower-level API than you might like if you want<br />

to use our code, but at least this way the recipes are more widely applicable.<br />

Much of the code that we present in the book will work on both Unix and Windows<br />

with little or no modification. In these cases, we’ve favored traditional<br />

Unix naming conventions. The naming conventions may feel foreign, but the<br />

bottom line is that no matter what platform you’re writing code for, naming conventions<br />

are a matter of personal preference.<br />

If you thumb through the table of contents, you’ll quickly find that this book<br />

contains a considerable amount of material relating to cryptography. Where it<br />

was reasonable to do so, we’ve covered CryptoAPI for Windows, but on the<br />

whole, OpenSSLgets far better coverage. It is our experience that CryptoAPI is<br />

not nearly as full-featured as OpenSSLin many respects. Further, some of the<br />

built-in Windows APIs for things such as SSLare far more complex than we felt<br />

was reasonable to cover. Security is something that is difficult to get right even<br />

with a good API to work with; an overly complex and underdocumented API<br />

certainly doesn’t help the situation.<br />

We’ve tried our best to give Unix and Windows equivalent coverage. However,<br />

for some topic areas, one platform may receive more in-depth attention. Generally,<br />

this is because of a specific strength or weakness in the platform. We do<br />

believe both Windows and Unix programmers can benefit from the material<br />

contained in this book.<br />

There will still be security problems in code despite this book.<br />

We have done our best to give you the tools you need to make your code a lot<br />

better. But even security gurus occasionally manage to write code with much<br />

This is the Title of the Book, eMatter Edition<br />

Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.<br />

Preface | xix

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!