1. JavaScript / Говнокод #6522

    +38

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Drupal.parseJson = function (data) {
      if ((data.substring(0, 1) != '{') && (data.substring(0, 1) != '[')) {
        return { status: 0, data: data.length ? data : Drupal.t('Unspecified error') };
      }
      return eval('(' + data + ');');
    };

    no comments. и как я понимаю нормальные люди делают eval завернутый в try

    Запостил: brainstorm, 30 Апреля 2011

    Комментарии (18) RSS

    • друпал надрупал.
      в принципе, хватило бы eval'а
      Ответить
      • try по моему не хватает на случай если в eval говно улетит
        Ответить
        • туда может улететь вообще что угодно, привет code injection!
          Ответить
          • баян.
            обычно eval делается над темчто приходит с твоего же сервера по конкретному запросу.(да и JS другое вроде как и не должен позволять)
            Ответить
            • это не "баян", а дело первой необходимости!
              Ответить
              • то есть я сам себе в своем JSON ответе своего приложения буду подсовывать левый код? оебу
                Ответить
                • а кто мешает сделать подлог?
                  Ответить
                  • ну бля. если юзеру надо - пусть лезет на сайт с отладчиком JS
                    меняет в нем переменную URL, и весь код так, чтобы json запрос ломился на другой домен.
                    ога. кстати ща это низя делать насколько я знаю.
                    Ответить
                    • С JSONP можно
                      Ответить
                      • ну так у нас без подкладок.
                        вообще понравилась реализация через new Function("return " + data) в jQuery.parseJSON больше чем eval. если на то пошло.
                        Ответить
              • Если не писать код как пидор, то eval не потребуется.
                Ответить
                • > не писать код как пидор
                  да-да, пишите, не будьте пидорами!
                  Ответить
                  • пидоры - сиплюсплюсовцы




                    .
                    Ответить
                  • "не (писать код как пидор)", а не "(не писать код) (как пидор)"

                    Чините парсер.
                    Ответить
          • eval() представляет угрозу если вы, например, знаете, что страница которую вы открываете использует какие-нибудь значения из параметров с которыми ее открывают. Или она обращается к вашему сервису, и потом результат этого запроса попадает в eval(). Но если ваш скрипт страница загрузила используя <script> тег, то тогда уже не важно есть в загрузившем скрипте eval(), или нет, вы и так сможете сделать все что хотите.
            Ответить
    • пизда тый говнокод
      Ответить
      • говнокод как всегда разрывает слова в самом интересном месте...
        Ответить

    Добавить комментарий