|
Bog'liq SQL Injection Attacks and Defense.pdf ( PDFDrive )
Contents
xv
Chapter 8 Code-Level Defenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Using Parameterized Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Parameterized Statements in Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Parameterized Statements in .NET (C#) . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Parameterized Statements in PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Parameterized Statements in PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Validating Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Whitelisting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Blacklisting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Validating Input in Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Validating Input in .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Validating Input in PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Encoding Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Encoding to the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Encoding for Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Oracle dbms_assert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Encoding for Microsoft SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Encoding for MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Canonicalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Canonicalization Approaches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Working with Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Designing to Avoid the Dangers of SQL Injection . . . . . . . . . . . . . . . . . . . . . . 365
Using Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
Using Abstraction Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Handling Sensitive Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Avoiding Obvious Object Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Setting Up Database Honeypots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Additional Secure Development Resources . . . . . . . . . . . . . . . . . . . . . . . . 371
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Do'stlaringiz bilan baham: |
|
|