PHP.mk документација

Известување за грешки

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

security.errors.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека security.errors.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
Известување за грешки

Референца за `security.errors.php` со подобрена типографија и навигација.

security.errors.php

Известување за грешки

Со PHP безбедност, има две страни на пријавување грешки. Едната е корисна за зголемување на безбедноста, другата е штетна.

Со PHP безбедноста, постојат две страни на пријавување грешки. Едната е корисна за зголемување на безбедноста, другата е штетна.

Стандардна тактика за напад вклучува профилирање на систем со хранење на несоодветни податоци и проверување на видовите и контекстите на грешките што се враќаат. Ова му овозможува на системскиот кракер да бара информации за серверот, за да утврди можни слабости. На пример, ако напаѓачот добил информации за страница врз основа на претходно поднесување на формула, тие може да се обидат да ги презапишат променливите или да ги модифицираат:

<form method="post" action="attacktarget?username=badfoo&amp;password=badfoo">
<input type="hidden" name="username" value="badfoo" />
<input type="hidden" name="password" value="badfoo" />
</form>

Пример #1 Напад на променливи со прилагодена HTML страница show_source(), highlight_string(), или highlight_file() PHP грешките што нормално се враќаат можат да бидат многу корисни за развивач кој се обидува да отстрани грешки во скрипта, укажувајќи на такви работи како што е функцијата или датотеката што откажала, PHP датотеката во која откажала и бројот на редот во кој настанал отказот. Ова се сите информации што можат да бидат искористени. Не е невообичаено PHP развивач да користи

како мерка за отстранување грешки, но на активна страница, ова може да открие скриени променливи, непроверена синтакса и други опасни информации. Особено опасно е извршувањето на код од познати извори со вградени ракувачи за отстранување грешки или користење на вообичаени техники за отстранување грешки. Ако напаѓачот може да утврди кој општ метод го користите, тие може да се обидат да ја нападнат страницата со брутална сила, испраќајќи разни вообичаени низи за отстранување грешки:

<form method="post" action="attacktarget?errors=Y&amp;showerrors=1&amp;debug=1">
<input type="hidden" name="errors" value="Y" />
<input type="hidden" name="showerrors" value="1" />
<input type="hidden" name="debug" value="1" />
</form>

Пример #2 Искористување на вообичаени променливи за отстранување грешки

Без оглед на методот на ракување со грешки, можноста за испитување на систем за грешки доведува до обезбедување на повеќе информации за напаѓачот. .html На пример, самиот стил на генеричка PHP грешка укажува дека системот работи со PHP. Ако напаѓачот гледал

страница и сакал да го испита задниот дел (за да бара познати слабости во системот), со хранење на погрешни податоци, тие може да утврдат дека системот е изграден со PHP.

Грешка во функција може да укаже дали системот работи со специфичен систем за бази на податоци или да даде навестувања за тоа како е програмирана или дизајнирана веб-страница. Ова овозможува подлабоко истражување на отворени порти за бази на податоци или барање специфични грешки или слабости во веб-страница. Со хранење различни парчиња лоши податоци, на пример, напаѓачот може да го утврди редоследот на автентикација во скрипта (од грешките на бројот на редот), како и да бара експлоатации што можат да бидат искористени на различни места во скриптата.

Системска датотека или општа PHP грешка може да укаже какви дозволи има веб-серверот, како и структурата и организацијата на датотеките на веб-серверот. Кодот за грешки напишан од развивачот може да го влоши овој проблем, што доведува до лесно искористување на порано „скриени“ информации.

Постојат три главни решенија за овој проблем. Првото е да се испитаат сите функции и да се обидат да се компензираат за поголемиот дел од грешките. Второто е целосно да се оневозможи пријавувањето грешки на работниот код. Третото е да се користат функциите за ракување со грешки на PHP за да се создаде сопствен ракувач со грешки. Во зависност од вашата политика за безбедност, можеби ќе најдете дека сите три се применливи за вашата ситуација. error_reporting()Еден начин да се фати овој проблем однапред е да се искористат сопствените E_ALLна PHP, за да ви помогне да го обезбедите вашиот код и да пронајдете употреба на променливи што може да бидат опасни. Со тестирање на вашиот код, пред распоредување, со error_reporting() , можете брзо да пронајдете области каде вашите променливи може да бидат отворени за труење или модификација на други начини. Откако ќе бидете подготвени за распоредување, треба или целосно да го оневозможите пријавувањето грешки со поставување php.ini option display_errorsна 0, или да го исклучите приказот на грешките користејќи error_log , за да го изолирате вашиот код од испитување. Ако го изберете второто, треба исто така да ја дефинирате патеката до вашата датотека за евиденција користејќи log_errors on.

ini директива, и да го вклучите

<?php
if ($username) { // Not initialized or checked before usage
$good_login = 1;
}
if (
$good_login == 1) { // If above test fails, not initialized or checked before usage
readfile ("/highly/sensitive/data/index.html");
}
?>

Белешки од корисници 1 белешка

Пример #3 Пронаоѓање опасни променливи со E_ALL
пред 17 години
Note for those of you using OpenBSD and PHP.  The default php.ini has display_errors=off . This is contrary to the PHP default of display_errors=on . If your having trouble seeing errors on OpenBSD make sure to edit your php.ini to have display_errors=on. (I had this problem on OpenBSD 4.4)
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.