Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Security Ruby: Реальный Rails

Программа урока

  • HTTPS
  • CSRF
  • OpenRedirect уязвимость
  • HTML/JavaScript инъекции
  • CSS инъекция
  • Textile инъекция
  • Ajax инъекции
  • Инъекции командной строки
  • Инъекция заголовка
# frozen_string_literal: true

require 'open-uri'
require 'nokogiri'
require 'net/http'
require 'net/https'

uri = URI('https://httpbin.org')
get_path = 'get'
post_path = 'post'

Net::HTTP.start(uri.host, uri.port,
                use_ssl: uri.scheme == 'https',
                verify_mode: OpenSSL::SSL::VERIFY_NONE) do |http|
  request = Net::HTTP::Get.new uri.request_uri + get_path

  response = http.request request

  puts response.body

  # cookie = response.response['set-cookie'].split('; ')[0]

  params = {
    test: true,
    hello: 'world'
  }

  request = Net::HTTP::Post.new uri.request_uri + post_path
  request.body = URI.encode_www_form(params)
  # request['Cookie'] = cookie

  response = http.request request

  puts response.body

  response.code == '200'
end

# Пример с получением страницы
hostname = 'https://example.com'

uri = URI(hostname)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new uri

response = http.request request

# Если нам нужно получить куки со страницы
cookie = response.response['set-cookie'].split('; ')[0]

params = {
  'name': "Jon",
  'email': "jon@example.com"
  'token': token
}

request = Net::HTTP::Post.new URI.join(hostname, '/register')
request.body = URI.encode_www_form(params)
# Добавляем куки в запрос
request['Cookie'] = cookie

response = http.request request

# При успешной отправке формы как правило
response.code == '302'

# Пример скрапинга данных со страницы
example_uri = URI('https://example.com/')
response = Net::HTTP.get_response(example_uri)

html = Nokogiri::HTML(response.body)
# Поиск нужного тега с помощью селекторов
token_tag = html.at('input[@name="token"]')
puts token_tag['value']

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 5 840 ₽ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 2 мая

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

Задавайте вопросы, если хотите обсудить теорию или упражнения. Команда поддержки Хекслета и опытные участники сообщества помогут найти ответы и решить задачу