Какой смысл использовать preg_match ('/ (benchmark | sleep) / i', $ id) - PullRequest
1 голос
/ 27 февраля 2012

Сегодня я начинаю читать разные статьи о SQLi и DoS / DdoS, чтобы знать, как защитить свой сайт, и я нашел эту вещь:

Ссылка: ссылка на статью

 // DB connection

    // $id = (int)$_GET['id'];
    $id = $_GET['id'];

    $result = mysql_query("SELECT id,name,pass FROM users WHERE id = $id")
 or die("Error");

    if($data = mysql_fetch_array($result))
     $_SESSION['name'] = $data['name'];



    if(preg_match('/(benchmark|sleep)/i', $id))
     exit('attack'); // no timing

Я хочу знать, как это использовать. Также после этого парень показывает, как его обойти, и я хочу знать, является ли PDO безопасным?

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Я хочу знать, как использовать это

Это довольно глупая и явно бесполезная попытка обнаружить возможную инъекцию SQL , которая должна запускать ресурс-потребляющий запрос.

Также после этого парень покажет, как его обойти

Не удивительно.
Как только у вас есть код, открытый для внедрения, есть тысячи способов его запустить,

Единственное, что вас беспокоит, это вообще инъекция .

Как только вы защититесь - инъекция ddos ​​будет невозможна.

я хочу знать, является ли PDO безопасным?

Во-первых, это не PDO, а строгое и постоянное использование подготовленных операторов считаетсяsecure.

Во-вторых, Нет, подготовленные заявления помогают только половине проблемы

1 голос
/ 27 февраля 2012

if(preg_match('/(benchmark|sleep)/i', $id)) проверяет, совпадает ли $id со строками benchmark или sleep (i означает без учета регистра).

В представленном контексте я бы сказал, что это нечувствую, что так всегда ... Я бы предпочел сделать это и покончить с этим:

$id = (int) $_GET['id'];

$result = mysql_query('SELECT id,name,pass FROM users WHERE id = '.$id);

Заметьте, я приведу id к int, так что если это что-то еще, он должен просто оказаться0, что, скорее всего, ничего не соответствует, так как столбцы идентификаторов обычно начинаются с 1 (из моего опыта в любом случае).

...