Created
February 14, 2020 17:32
-
-
Save Lexx918/db1c0a8f3e0bf70b13dbce58ed276961 to your computer and use it in GitHub Desktop.
SO-1081169
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Материалы для поднятия макета по вопросу | |
https://ru.stackoverflow.com/questions/1081169/sql-инъекция-формы-на-сайте/ | |
Создаём папку с проектом, и файлами в ней: | |
so | |
-nginx | |
--default.conf | |
-php | |
--Dockerfile | |
-docker-compose.yml | |
-index.php | |
Содержимое файлов: | |
./so/nginx/default.conf: | |
client_max_body_size 10m; | |
server { | |
listen 80; | |
server_name so-1081169; | |
root /app; | |
location / { | |
try_files $uri /index.php$is_args$args; | |
} | |
location ~ ^/.+\.php(/|$) { | |
fastcgi_pass fpm:9000; | |
include fastcgi_params; | |
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | |
} | |
} | |
./so/php/Dockerfile: | |
FROM php:7.2.27-fpm | |
RUN docker-php-ext-install \ | |
mysqli \ | |
pdo \ | |
pdo_mysql | |
./so/docker-compose.yml: | |
version: "3.2" | |
services: | |
fpm: | |
build: ./php | |
volumes: | |
- ./:/app | |
links: | |
- db | |
nginx: | |
image: nginx:latest | |
ports: | |
- "80:80" | |
volumes: | |
- ./nginx:/etc/nginx/conf.d/ | |
- .:/app | |
links: | |
- fpm | |
db: | |
image: percona:5.6 | |
restart: always | |
environment: | |
MYSQL_ROOT_PASSWORD: foo | |
./so/index.php: | |
<form method="post"> | |
<input type="text" name="login"> (admin)<br> | |
<input type="text" name="password" value="456"> (123)<br> | |
<input type="submit" value="send"> | |
</form> | |
<?php | |
$login = $_POST['login'] ?? null; | |
$password = $_POST['password'] ?? null; | |
if ($login && $password) { | |
$login = trim(htmlspecialchars(stripslashes($login))); | |
$password = trim(htmlspecialchars(stripslashes($password))); | |
$db = mysqli_connect("db", "root", "foo", "test"); | |
$q = "SELECT * FROM users WHERE login='$login'"; | |
echo "<pre>{$q}</pre>"; | |
$result = mysqli_query($db, $q); | |
$myrow = mysqli_fetch_array($result); | |
$password = md5($password . "sdf"); | |
echo $myrow['password'] == $password ? "correct!" : "wrong!"; | |
} | |
Теперь устанавливаем Docker, идём в консоли в папку проекта и выполняем команду: | |
docker-compose up --build | |
Когда она закончит работать, выкачает пхп, веб-сервис, мускуль, и запустит всё - | |
можно открыть http://localhost/ и увидеть макет для отладки. | |
Но ещё надо создать базу: | |
выполяем: | |
docker container list | |
ищем контейнер с базой, выполняем (подставляя идешку контейнера) | |
docker exec -it <container-id> bash | |
оказываемся внутри контейнера, подключаемся к мускулю | |
mysql -uroot -pfoo | |
создаём базу и таблицу в ней | |
create database test; | |
use test; | |
create table users(id int, password char(32), login char(10)); | |
insert into users(1, "ae4b57dd10695a75861221d2204dd032", "admin"); | |
выходим | |
quit | |
exit | |
готово! можно отлаживать всё на прототипе на локалхосте. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment