анти спам в php - PullRequest
       30

анти спам в php

0 голосов
/ 01 марта 2010

Эй, ребята, сегодня я зашел на свой сайт и увидел, что кто-то вставил более 1000 запросов в мою таблицу историй

мой скрипт в php / mysql, и у меня включена капча, и мне интересно, как он может это сделать

простая форма и в другой функции она проверяет $ vars и проверяет их, а затем вставляет в базу данных

я уверен, что он использует бота, чтобы сделать такую ​​вещь

Я действительно в замешательстве

это моя функция для проверки и вставки в таблицу

    function submitStory($name, $address, $subject, $story, $storyext, $topic, $alanguage,$tags) {

        $subject = check_words(check_html(addslashes($subject), "nohtml"));
        $story = check_words(addslashes($story), "nohtml");
        $storyext = check_words(addslashes($storyext), "nohtml");

        $result = $db->sql_query("INSERT INTO ".$prefix."_stories 
            (sid,catid,aid,title,time,hometext,bodytext,newsref,newsreflink,comments,counter,topic,informant,notes,ihome,alanguage,acomm,hotnews,haspoll,pollID,associated,tags,approved,section)
        VALUES
(NULL, '$catid', '', '$subject', now(), '$story', '$storyext', '','', '0', '0', '$topic', '$name', '', '', '$alanguage', '', '', '0', '0', '','$tag_ids','2','news')");

 mysql_error();


        include ('header.php');
        echo "<font class=\"content\"><b>"._THANKSSUB."</b><br><br>"
        .""._SUBTEXT.""
        ."<br>"._WEHAVESUB." $waiting "._WAITING."";

        include ('footer.php');
    }

Ответы [ 3 ]

3 голосов
/ 01 марта 2010

@ Mac,

Несмотря на то, что вы добавляете addlashes к нескольким переменным, остальные подвергаются внедрению sql. Пожалуйста, примените mysql_real_escape_string функцию ко всем переменным и включите в список следующее:

$catid, $topic, $name, $alanguage, $tag_ids

Я настоятельно рекомендую вам применить mysql_real_escape_string, но если вы действительно спешите и хотите быстро исправить ситуацию, чтобы сразу попробовать, не задаваясь вопросом, что такое "1008" на самом деле и что он делает, то по крайней мере примените addslashes переменным, которые я упомянул выше в вашем function submitStory.

Подробнее о mysql_real_escape_string можно прочитать здесь

Надеюсь, это поможет. Дайте нам знать.

2 голосов
/ 01 марта 2010

Скорее всего, Атака SQL-инъекции . Вы должны немедленно отключить ваш сайт и не включать его повторно, пока вы не исправите уязвимость и не проверите тщательно свою базу данных вся на наличие вредоносных программ, таких как Zeus dropper.

Если на вашем сайте разрешен пользовательский контент, вам также следует тщательно отфильтровать его на наличие злых HTML-тегов, JavaScript и т. Д.

0 голосов
/ 01 марта 2010
  1. Как только кто-то получит капчу, сможет ли он опубликовать любое количество историй? (т. е. сейчас считаются безопасными для этой сессии). Это только доказывает, что они люди с первой попытки ...

  2. Есть ли ограничение на количество сообщений после регистрации?

  3. У вас есть сгенерированный идентификатор для каждого сеанса зарегистрированного пользователя и форма, чтобы их учетные данные не могли быть использованы в XSS?

Если 1 истинно или 2 и 3 ложно, они могут абсолютно запустить скрипт для спама в БД.

...