2013-04-29 4 views
0

У меня есть несколько простых сценариев на моем сайте, которые позволяют пользователям выполнять такие задачи, как вычисление различий по дате, выполнение математических вычислений и т. Д. Веб-сайт составляет около 95% чистый html (не сгенерированный php), за исключением некоторый jquery/ajax, который отправляет пользовательский ввод на серверную сторону для выполнения вычислений. Код Ajax выглядит следующим образом:php security и ajax-запросы

$.ajax({ 
    type: "POST", 
    url: "script/calc.php", 
    data: { userval:val}, 
    success: function(response){ 
    //display response 
    } 
}); 

Когда введенный пользователь значение/должен быть числами я добавить (INT) перед переменным постом на PHP файл «calc.php», несмотря на то, с точкой зрения безопасности я не думаю, что это может вызвать проблемы.

Im мышления фильтрующей HTTP_REFERER, поэтому файл PHP только получает запросы от моего сайта (чтобы избежать каких-либо злоупотреблений), но я читал, что рассчитывает только на HTTP_REFERER не является конечным трюка, поскольку он опирается на браузере пользователя и иногда он может быть пустым. С другой стороны, стороны. Я знаю, что ajax по умолчанию не позволяет публиковать сообщения в другом домене, но есть и хак для .

Я не хардкорный парень безопасности, я знаю некоторые основы, так есть ли что-нибудь, что вы, ребята, можете мне предложить? Что в этом случае может пойти не так. Обратите внимание, что я не использую никакой базы данных , есть только php-файл, который выполняет некоторые вычисления и ничего больше (ничего , как доступ к любой директории, загрузке файла или к таким вещам).

Есть ли что-нибудь, что я еще должен серьезно рассмотреть, чтобы предотвратить злоупотребление сервером, xss-атаки или similiar?

Edit: Так в основном calc.php имеет структуру, как это (очень простой)

// ожидает целое $ userval = (INT) $ _POST [ 'userval'];

$ total_sum = ($ userval * 15) * (150 * ($ userval-2));

echo $ total_sum; unset ($ total_sum);

// конец //

+0

Большая безопасность сводится к дезинфекции входных данных пользователя. Большинство бриджи - это недостаток. –

+0

Что ж, если у вас есть проблемы с 'script/calc.php', нам нужно увидеть источник (или, по крайней мере, его часть). – Blender

ответ

0
  1. AJAX использует JavaScript, который имеет СОП (SAME ORGIN ПОЛИТИКА) читать о его http://en.wikipedia.org/wiki/Same_origin_policy

  2. Проверьте, что у вас есть вход. Если вы ожидаете, что номера проверяют их в php и лить с (int) или intval()

  3. Что необходимо для ввода данных? Если вы не помещаете ничего в базу данных, вы не меняете свои файлы, для чего вы используете вход?

  4. Вы всегда можете использовать регулярные выражения, если у вас есть строки и их проверка, и вы должны избегать их в зависимости от того, где вы хотите их хранить. Но цифры облегчают ситуацию.

  5. Сценарий, который вы предоставили, сохраняется.

  6. Хорошая практика также регистрирует все подозрительные попытки, и если их слишком много, вы должны заблокировать пользователя.

+0

Здравствуйте, спасибо за ваш ответ. Так как я упомянул, что большинство скриптов являются калькуляторами. Php ожидает одно или два значения, выполняет некоторые вычисления, а затем выводит результат и отправляет его обратно :) – inrob

+0

intval(), is_numeric(), casting - все, что вам нужно :) – Robert

+0

Также, если я могу задать вопрос вне темы вопрос, это не очень сложная задача для php, будет ли у меня какая-либо проблема с загрузкой сервера, учитывая случай, когда пользователи 6k будут использовать мой сайт одновременно, нет базы данных, поэтому повторяю выполнение некоторых умножений/дополнений и эхо результат - все, что нужно сделать php. – inrob