69 | 70 |
71 |
72 |

Automatické zabezpečení

73 |
74 | 75 |
76 |

Úroveň zabezpečení aplikace bych rozdělil do tří úrovní:

77 |
    78 |
  1. Aplikace zabezpečená není, neošetřuje uživatelské vstupy ani své výstupy.
  2. 79 |
  3. Aplikace se o zabezpečení snaží, ale takovým způsobem, že na ně lze zapomenout.
  4. 80 |
  5. Aplikace se o zabezpečení stará sama, prakticky se nedá udělat chyba.
  6. 81 |
82 |

Jak se tyto úrovně projevují v jednotlivých oblastech?

83 |

XSS

84 |

Druhou úroveň představuje ruční ošetřování pomocí htmlspecialchars. Třetí úroveň zdánlivě reprezentuje automatické ošetřování v šablonách, např. v Nette Latte. Proč píšu zdánlivě? Problém je v tom, že ošetření se dá obvykle snadno zakázat, např. v Latte pomocí {!$var}. Viděl jsem šablony plné vykřičníků i na místech, kde být neměly. Autor to vysvětlil tak, že psaní {$var} někde způsobovalo problémy, které po přidání vykřičníku zmizely, tak je začal psát všude.

85 |
<?php
 86 | $safeHtml = $texy->process($content_texy);
 87 | $content = Html::el()->setHtml($safeHtml);
 88 | // v šabloně pak můžeme použít {$content}
 89 | ?>
90 |

Ideální by bylo, když by už samotná metoda process() vracela instanci Html.

91 | 125 |
126 | 127 |
128 | 129 | 130 |