2013-09-17 2 views
2

При попытке понять общие дыры в безопасности у меня есть очень короткий вопрос. Могло ли это утверждение когда-либо стать верным с каким-то умным входом?Вредоносный код и PHP

if ($_GET["h"] != $_GET["h"]) { 

} 

(Просто используя это в качестве примера, не планирует использовать этот точный код: P)

+0

Вероятно, нет, но то, что находится внутри блока, который заставляет вас спросить? –

+0

Обычно вы можете доверять тому, что любой веб-сервер, который вы используете, передает вам фактические значения, которые находятся в URL-адресе, и не нужно беспокоиться о том, что они меняются. В большинстве случаев вам нужно беспокоиться о том, куда вы передаете эти значения. Если вы передаете свой вход в базу данных или оболочку, вам нужно беспокоиться о том, что эти входы будут делать. –

+0

Ничто не находится внутри этого блока, просто добавьте его в качестве примера. Насколько я мог доверять своим GET. :) – Lumpa

ответ

1

не так далеко, как я знаю.

Параметры от $_GET передаются по URL-адресу, как page.php?h=value. После того, как представляется, один не может изменить свое мнение между первым $_GET и второй ...

+1

Я думал о том, как работают SQL-инъекции, если бы можно было сократить это утверждение коротко как-то и игнорировать его части или добавляя ** || true == true ** и т. д. – Lumpa

+1

Ну, но SQL-инъекция просто добавляет другое выражение, которое всегда равно «true». Например, '|| false! = true'. В 'PHP' значения сначала будут извлечены. А так как нельзя переносить булево выражение в переменную, это не сработает ... –

3

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

if ('1' != 1) { echo 'true'; } // Does not echo 
if (1000 != "10e4") { echo 'true'; } // Does not echo 
if ('1' !== 1) { echo 'true'; } // echoes true 

Смотрите больше на PHP операторов: http://php.net/manual/en/language.operators.comparison.php

+0

В каком сценарии будет использоваться одна и та же переменная двух разных типов значений? – Marty

+0

Нет. Это утверждение никогда не может быть правдой. – Havenard

+0

@ Хевенард: Испытай, если ты мне не веришь. http://d.pr/i/tbvl –

Смежные вопросы