Последние год полтора пишу продакшен в основном на Laravel.
Собственно в последнее время мне стало скучно и решил я поискать себе приключений на свою точку.
Глянул курс по JAVA SE (синтаксис, пару либ), куда двигаться дальше?
Что посоветуете попилить в качестве тестового проекта, чтобы посмотреть, что вообще можно реализовать?
Как вы считаете, такой подход приемлимый, или быдлокодинг в квадрате?
func () (id string) {
for id = generateString(32); unique(id); id = generateString(32) {
}
return id
}
$task->start("'; DROP TABLE " . PREFIX . '_tasks');
Я понимаю, что веб часть (мою часть) где-то развернули и активно исследуют (читай п****т).
как построить доказательную базу имея (пока что) в арсенале только репозитарий с историей разработки и знание о том, что проект был где-то развернут?
<?php
// Не стоит использовать глобальные И суперглобальные переменные.
// Лучше в принципе забудьте про их существование.
// В начале обработки сформируйте Request и уже далее с ним работайте.
// Вы данные на входе даже не проверяете, это ужасно
$uname = $_REQUEST['user_name'];
$upass = $_REQUEST['user_pass'];
// Это уже прошлое, mysql_*** НЕ поддерживается.
mysql_connect("localhost", "root", "12345678");
mysql_select_db("orders");
// см. выше на счет суперглобальных переменных.
$user_ip = $_SERVER['REMOTE_ADDR'];
// Почитайте про PSR и забудьте про существование однострочных управляющих конструкций
if ($_SERVER['HTTP_X_FORWARDED_FOR']) $user_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
if ($user_ip=="127.0.0.1")
{
// Авторизация по ip, вы серьезно?))
echo "Добрый день Администратор<br>";
}
else
{
// Что будет, если отправить $upass="';DROP TABLE users; SELECT '1" ?
// Это называется sql инъекция
// Параметры подставляются по другому
$sqlQuery = "SELECT * FROM users WHERE uname='$uname' and upass='$upass' and `real`=1";
$result = mysql_quеry($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
// Не используйте присваивания в условиях
if ($user = mysql_fеtch_array($result));
{
echo "Здравствуйте ".$user['fio']."<br>";
}
else
{
echo "Я вас не знаю"; exit;
}
}
// см. выше на счет суперглобальных переменных
if ($_REQUEST['search'])
{ // Выводим результаты поиска
echo "Результат поиска: <br>";
$search_name=$_REQUEST['search'];
// Что будет, если отправить $search_name="';SELECT CONCAT(uname, ' ', upass) AS info FROM users" ?
// тоже sql-инъекция
// и входящие данные вы не проверяете
$sqlQuery = "SELECT * FROM forms WHERE satus='$search_name'";
$result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
while ($one_form = mysql_fetch_аrray($result))
{
echо $one_form['info']."<br>";
}
}
echo "<form>Введите поиск: <input type=text name='search'><input type=submit></form>".;
?>
Может ли разработчик украсть доступ?
/**
* @property TYPE_HERE VAR_NAME_HERE [DESCRIPTION]
*/
П.С. Код не мой, переписать не хочется, так как есть много проектов на этом движке.
А как себя защитить ? Вдруг они с меня то денег потом возьмут и код и все наработки оставят у себя
git push --force
// Должен быть приватным
DependencyManager::$dependencies;
// Что это за хардкод?))
DependencyManager::__construct
// 1. Вы не проверяете аргументы, что будет, если я передам в $class
// например new \Exception()? А еще лучше строку "trololo"?
// 2. Нейминг - гуано, вы не проверяете зависимость, а возвращаете.
// 3. Если зависимость не найдена - будьте добры исключение.
DependencyManager::checkDependencies($class)
// Эта переменная не нужна, передавайте ее в метод
Loader::$className
// Эта переменная должна быть приватная, что будет, если туда вставить
// например строку и попытаться обработать?
Loader::$dependencyManager;
// Херня. У вас метод делает какую-то магию.
Loader::loadClass
Еще пришла идея в классы с зависимостями передавать в аргументах интерфейсы, а не объекты.
как работают фронтенд разработчики в команде
как они взаимодействуют с бэкенд разработчиками
что входит в обязанности фронтендера
как связан бэкенд с фронтендом(и кто за это отвечает).