2013-06-05 5 views
2

Я создал сайт (чистое хобби). То, что я в основном делаю, вызывает все ajax в фоновом режиме с помощью jquery. Да, это безопасно от SQL Injection, поэтому никакого вреда не было, но я не хочу, чтобы пользователь мог проверить его в инструменте firebug/developer, и попытаться использовать URI и вручную ввести его на панели инструментов URL и получить результат. Как я могу предотвратить это?PHP - перенаправление REQUEST_URI - правильный путь?

Пример, вводимые пользователем в поле URL: www.something.com/datapull.php?get=Data & Person = Sean

У меня есть что-то вроде:

if(strpos($_SERVER['REQUEST_URI'],'/datapull.php') !== false) { header('Location: /'); } 

, но когда я do, моя сеть попадает в бесконечный цикл. Я в основном хочу, чтобы веб-сайт был в любое время: www.something.com

Как я могу хранить его на адресе THAT без ввода вручную пользователем?

+0

Я думаю, что вы должны использовать абсолютный путь вместо относительного – Fabio

+0

, чтобы объяснить немного больше? – sgkdnay

+0

что-то вроде 'header ('Местоположение: http://www.something.com')' – Fabio

ответ

2

Выработать на мой комментарий вы могли бы попробовать это ..

В АЯКС файл запроса вы можете проверить $_SERVER['HTTP_REFERER'] быть установлен, и содержащую свое собственное доменное имя ..

Вот краткий пример ..

index.php

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Ajax Test</title> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
    </head> 
    <body> 
     <div class="ajax_receiver"> 

     </div> 
     <script> 

      $('.ajax_receiver').load('data.php'); 

     </script> 
    </body> 
</html> 

data.php

<?php 

    print_r($_SERVER); 

Если вы запустите это как есть, вы увидите содержимое $_SERVER и увидите HTTP_REFERER.

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

data.php (обновлено)

<?php 
    if (! isset($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME']) === false) 
    { 
     exit; 
     // or take whatever exit action you want here 
    } 
    print_r($_SERVER); 

Надеюсь, вы можете использовать это, чтобы вы начали.

+0

Отлично, только то, что мне нужно. Не мог подумать, где и как я могу это сделать. Вернусь к вам после того, как я успешно реализую этот или неудачный LOL .. еще раз спасибо! – sgkdnay

+0

Без проблем, удачи :) – Dale

0

Что я в основном делаю, это вызов всех ajax в фоновом режиме с использованием jquery. Да, это безопасно от SQL Injection, поэтому никакого вреда не было.

Извините, если я говорю, что это не помогает предотвратить внедрение SQL.

Однако я не хочу для пользователя, чтобы проверить в Firebug/инструмент для разработчиков и пытаются использовать URI и вручную ввести его в панели инструментов URL и получить результат.

Если ссылка недоступна веб-браузером, то и ваш AJAX.

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