Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Kant

Программирование ver 4.1

Рекомендованные сообщения

Ребят, есть задание: написать программу. Суть её заключается в том, чтобы автоматически, по нажатию одной кнопки кликать на определенном сайте на определенные ссылку, вводить числа, и.т.п. Плюс делать эти же операции в одной сторонней программе. Так толком не объяснить, кто реально шарит - будьте добры в ЛС. О цене договоримся без проблем.

Поделиться сообщением


Ссылка на сообщение

Перед какой записью? Экранировать надо при выводе, иначе всегда есть шанс получить уязвимость на ровном месте :nate:

Поделиться сообщением


Ссылка на сообщение
Гость 2poy_nyasha

Ребят, есть задание: написать программу. Суть её заключается в том, чтобы автоматически, по нажатию одной кнопки кликать на определенном сайте на определенные ссылку, вводить числа, и.т.п. Плюс делать эти же операции в одной сторонней программе. Так толком не объяснить, кто реально шарит - будьте добры в ЛС. О цене договоримся без проблем.

зачем для этого программа нужна? лол

 

 

вон пацаны тебе на рельсах напишут (за страпон), или диман на жаве (за много кккк баксов), или кант на ассемблере (за картошку), или рабишь скажет что ты хуевый (за просто так, он добрый), или тинплз на с++ напишет не рабочий код (тоже картошку как не странно)

 

Перед какой записью? Экранировать надо при выводе, иначе всегда есть шанс получить уязвимость на ровном месте :nate:

в базу, конечно, тогда не будет уязвимости, да и xss это не уязвимость!

Поделиться сообщением


Ссылка на сообщение

Я понял, что в базу. Но это хуёвый какой-то подход, юзерские данные лучше оставлять как есть, а экранировать всё при выводе.

Поделиться сообщением


Ссылка на сообщение
(изменено)

11 строка, на mysql_query ( $query ) or exit( mysql_error() );

чо выдает?

 

скорее всего ты хуево коннекнутлся к бд, если ваще это сделал

хз как проверить что она выдает, загуглил mysql_query debug, сделал так:

<?php

include 'functions.php';

include 'global.php';

 

$query = "SELECT * FROM `user`";

$result = mysql_query ( $query ) or exit( __FILE__." (".__LINE__.") ".$query );

if (!$result) {

$message = 'Неверный запрос: ' . mysql_error() . "\n";

$message .= 'Запрос целиком: ' . $query;

die($message);

}

print "<ul class='users'>".PHP_EOL;

 

while( $line = mysql_fetch_assoc( $result ) ) {

echo echo "<li><a onclick='top.chat.document.forms[0].message.value+=\"{$line[username]}, \"'>{$line[username]}</a></li>";

}

 

print "</ul>".PHP_EOL;

 

echo setlocation( "nicklist", 60, $_SERVER['PHP_SELF'] );//60 - second for refresh

mysql_free_result( $result );

?>

теперь там пусто :hmm: но теперь вот тут

 

1

<?php
error_reporting( E_ALL ^ E_NOTICE );
session_start();
session_register( "userid" );

@$action = $_GET['action'];

include 'functions.php';
include 'global.php';

global $user;
echo "<html><body>";

if( empty( $_SESSION['userid'] ) ) {    
   if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {//catch incoming nick    
       if( !empty( $_POST['username'] ) ) {//check for existence
           $query = "SELECT `userid` FROM `user` WHERE `username` = '".htmlspecialchars( $_POST['username'] )."'";
           $r = mysql_query( $query ) or exit( __FILE__." (".__LINE__.") ".$query );

           if( mysql_num_rows( $r ) ) {//if exists
               echo "<center>Уже есть</center>";

           } else {//reg
               $query = "INSERT INTO `user` 
                   ( `username`, `lastactivity` ) 
               VALUES 
                   ( '".htmlspecialchars( $_POST['username'] )."',".mktime()." )";

               mysql_query( $query ) or exit( __FILE__." (".__LINE__.") ".$query );

               $_SESSION['userid'] = mysql_insert_id();

               echo "<center>Привет, $_POST[username]</center>".
                   setlocation( 'chat', 0, 'input.php' ).
                   setlocation( 'main', 2, 'main.php' );

               echo "</body></html>";
               $query = "INSERT INTO `chat` VALUES ( $_SESSION[userid], 'я пришел!!!!', '".mktime()."' )";
               @mysql_query( $query );
           }//if( mysql_num_rows( $r ) )
       }//if( !empty( $_POST['username'] ) )   
else "<script language=javascript>alert('Введите ник');</script>";
   } else {
       echo 
"<form method='POST'>
<input type='text' name='username' size='30' />
<input type='submit' value='Enter' />
</form>
</body></html>";
   }//if( 'POST' == $_SERVER['REQUEST_METHOD'] )    
   exit;
}//if( empty( $_SESSION['userid'] ) )

if( "exit" == $action ) {
   session_destroy();
   $query = "INSERT INTO `chat` VALUES ( $user[userid], 'я ушел!!!!', '".mktime()."' )";
   @mysql_query( $query );

   $query = "DELETE FROM `user` WHERE `userid`='$user[userid]'";
   mysql_query( $query );

   echo setlocation( 'main', 0, 'main.php' );
   exit;
}//if( "exit" == $action ) 

echo "<center>Чат для $user[username] <a href='main.php?action=exit'>выйти</a></center>";

$query = "SELECT * FROM `chat` LEFT JOIN `user` USING (`userid`) ORDER BY `date` DESC";
$result = mysql_query ( $query ) or die ( "Query failed: $query" );

echo "<ul>".PHP_EOL;

while( $line = mysql_fetch_assoc( $result ) ) {
   echo "<li><span class='ts'>".getdatestring( $line['date'] )."</span>
<span class='un'>$line[username]:</span>
<span class='msg'>$line[message]</span></li>";
}//while

print "</ul>".PHP_EOL;

mysql_free_result( $result );

$query = "UPDATE `user` SET `lastupdate` = '".mktime()."' WHERE `userid` = $_SESSION[userid] ";
@mysql_query( $query );

echo "</body></html>";
?> 

создается текстбокс и кнопка Enter. Жму на нее если что-то есть в инпуте - выводится /адрес фтп/логин фтп/адрес сайта/chat/main.php (24) SELECT `userid` FROM `user` WHERE `username` = 'то что ввел в инпуте'

Если ничего не ввести и нажать - просто исчезает, никакого алерта нету :hmm: Опять обернуть $r и проверять if (!$r) ?


Изменено пользователем justice_st

Поделиться сообщением


Ссылка на сообщение
Гость 2poy_nyasha

ну сообщения само собой

 

а вот логины можно (и нужно) сперва проверять реуляркой (ибо нехуй спешл чары в логины лепить) а потом уже записывать, или бросать эксепшн/возвращать ошибку

 

ибо каждый раз заебешся все через функцию пропускать.

Поделиться сообщением


Ссылка на сообщение

может я чего-то не понял, но зачем проверять данные при выводе? :hmm: :hmm: :hmm:

Поделиться сообщением


Ссылка на сообщение
Гость 2poy_nyasha

замени везде __FILE__." (".__LINE__.") ".$query на mysql_error()

 

@$action = $_GET['action'];

 

не делай так!

$action = empty($_GET['action']) ?: $_GET['action']; или

$action = empty($_GET['action']) ? 'indexAction' : $_GET['action'];

 

не экранизируй такие вещи

echo "<html><body>";

 

через echo

 

 

 

ваще жесткий говнокод

Поделиться сообщением


Ссылка на сообщение
if( empty( $_SESSION['userid'] ) ) {  
if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {//catch incoming nick  
	if( !empty( $_POST['username'] ) ) {//check for existence
		$query = "SELECT `userid` FROM `user` WHERE `username` = '".htmlspecialchars( $_POST['username'] )."'";
		$r = mysql_query( $query ) or exit( __FILE__." (".__LINE__.") ".$query );
if (!$r) {
$message  = 'Неверный запрос: ' . mysql_error() . "\n";
$message .= 'Запрос целиком: ' . $query;
die($message);
}

после клика по пост-форме форма исчезает и появляется текст - фтп адрес/фтп логин/адрес сайта/+сам запрос, дальше ничего не происходит

Поделиться сообщением


Ссылка на сообщение

11 строка, на mysql_query ( $query ) or exit( mysql_error() );

чо выдает?

 

скорее всего ты хуево коннекнутлся к бд, если ваще это сделал

хз как проверить что она выдает, загуглил mysql_query debug, сделал так:

<?php
include 'functions.php';
include 'global.php';

$query = "SELECT * FROM `user`";
$result = mysql_query ( $query ) or exit( __FILE__." (".__LINE__.") ".$query );
if (!$result) {
$message  = 'Неверный запрос: ' . mysql_error() . "\n";
$message .= 'Запрос целиком: ' . $query;
die($message);
}	
print "<ul class='users'>".PHP_EOL;

while( $line = mysql_fetch_assoc( $result ) ) {
echo echo "<li><a onclick='top.chat.document.forms[0].message.value+=\"{$line[username]}, \"'>{$line[username]}</a></li>";
}

print "</ul>".PHP_EOL;

echo setlocation( "nicklist", 60, $_SERVER['PHP_SELF'] );//60 - second for refresh
mysql_free_result( $result );
?>

теперь там пусто :hmm: но теперь вот тут

 

1

<?php
error_reporting( E_ALL ^ E_NOTICE );
session_start();
session_register( "userid" );

@$action = $_GET['action'];

include 'functions.php';
include 'global.php';

global $user;
echo "<html><body>";

if( empty( $_SESSION['userid'] ) ) {	
if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {//catch incoming nick	
	if( !empty( $_POST['username'] ) ) {//check for existence
		$query = "SELECT `userid` FROM `user` WHERE `username` = '".htmlspecialchars( $_POST['username'] )."'";
		$r = mysql_query( $query ) or exit( __FILE__." (".__LINE__.") ".$query );

		if( mysql_num_rows( $r ) ) {//if exists
			echo "<center>Уже есть</center>";

		} else {//reg
			$query = "INSERT INTO `user`
				( `username`, `lastactivity` )
			VALUES
				( '".htmlspecialchars( $_POST['username'] )."',".mktime()." )";

			mysql_query( $query ) or exit( __FILE__." (".__LINE__.") ".$query );

			$_SESSION['userid'] = mysql_insert_id();

			echo "<center>Привет, $_POST[username]</center>".
				setlocation( 'chat', 0, 'input.php' ).
				setlocation( 'main', 2, 'main.php' );

			echo "</body></html>";
			$query = "INSERT INTO `chat` VALUES ( $_SESSION[userid], 'я пришел!!!!', '".mktime()."' )";
			@mysql_query( $query );
		}//if( mysql_num_rows( $r ) )
	}//if( !empty( $_POST['username'] ) )  
else "<script language=javascript>alert('Введите ник');</script>";
} else {
	echo
"<form method='POST'>
<input type='text' name='username' size='30' />
<input type='submit' value='Enter' />
</form>
</body></html>";
}//if( 'POST' == $_SERVER['REQUEST_METHOD'] )	
exit;
}//if( empty( $_SESSION['userid'] ) )

if( "exit" == $action ) {
session_destroy();
$query = "INSERT INTO `chat` VALUES ( $user[userid], 'я ушел!!!!', '".mktime()."' )";
@mysql_query( $query );

$query = "DELETE FROM `user` WHERE `userid`='$user[userid]'";
mysql_query( $query );

echo setlocation( 'main', 0, 'main.php' );
exit;
}//if( "exit" == $action )

echo "<center>Чат для $user[username] <a href='main.php?action=exit'>выйти</a></center>";

$query = "SELECT * FROM `chat` LEFT JOIN `user` USING (`userid`) ORDER BY `date` DESC";
$result = mysql_query ( $query ) or die ( "Query failed: $query" );

echo "<ul>".PHP_EOL;

while( $line = mysql_fetch_assoc( $result ) ) {
echo "<li><span class='ts'>".getdatestring( $line['date'] )."</span>
<span class='un'>$line[username]:</span>
<span class='msg'>$line[message]</span></li>";
}//while

print "</ul>".PHP_EOL;

mysql_free_result( $result );

$query = "UPDATE `user` SET `lastupdate` = '".mktime()."' WHERE `userid` = $_SESSION[userid] ";
@mysql_query( $query );

echo "</body></html>";
?> 

создается текстбокс и кнопка Enter. Жму на нее если что-то есть в инпуте - выводится /адрес фтп/логин фтп/адрес сайта/chat/main.php (24) SELECT `userid` FROM `user` WHERE `username` = 'то что ввел в инпуте'

Если ничего не ввести и нажать - просто исчезает, никакого алерта нету :hmm: Опять обернуть $r и проверять if (!$r) ?

спасибопожалуйста

Поделиться сообщением


Ссылка на сообщение
Гость 2poy_nyasha

'POST' == $_SERVER['REQUEST_METHOD']

тоже что и

!empty($_POST)

 

if( empty( $_SESSION['userid'] ) ) {  
if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {//catch incoming nick  
	if( !empty( $_POST['username'] ) ) {//check for existence
		$query = "SELECT `userid` FROM `user` WHERE `username` = '".htmlspecialchars( $_POST['username'] )."'";
		$r = mysql_query( $query ) or exit( __FILE__." (".__LINE__.") ".$query );
if (!$r) {
$message  = 'Неверный запрос: ' . mysql_error() . "\n";
$message .= 'Запрос целиком: ' . $query;
die($message);
}

после клика по пост-форме форма исчезает и появляется текст - фтп адрес/фтп логин/адрес сайта/+сам запрос, дальше ничего не происходит

потому что это выводится __FILE__." (".__LINE__.") ".$query потому что у тебя ошибка в запросе

 

а тебе нужна ошибка поэтому выводи mysql_error()

Поделиться сообщением


Ссылка на сообщение

No database selected :trollface: ebat_ty_loh.jpg

Поделиться сообщением


Ссылка на сообщение
(изменено)

ппц 4 символа исправил и все заработало

осталось замаскировать говнокод под цссом :tusila-zavodila:

Вот C# регулярка @"^[_a-z\d\[\]\(\)\-\.]{2,16}$"

как ее конвертнуть для пхп?


Изменено пользователем justice_st

Поделиться сообщением


Ссылка на сообщение
Гость 2poy_nyasha

она должна работать и в пхп

 

только @ не надо

и "/^[_a-z\d\[\]\(\)\-\.]{2,16}$/" / / поставил

Поделиться сообщением


Ссылка на сообщение
(изменено)
$query = "SELECT `userid` FROM `user` WHERE `username` = '".htmlspecialchars( $_POST['username'] )."'";

Можешь прощаться с базой.


Изменено пользователем Обязательное_поле

Поделиться сообщением


Ссылка на сообщение

поставил в начало $action = empty($_GET['action']) ? 'indexAction' : $_GET['action'];

теперь если нажать выход

 

if( "exit" == $action ) {

session_destroy();

$query = "INSERT INTO `chat` VALUES ( $user[userid], 'User '+$user[userid]+' left.', '".mktime()."' )";

@mysql_query( $query );

//$query = "DELETE FROM `user` WHERE `userid`='$user[userid]'";

//mysql_query( $query );

echo setlocation( 'main', 0, 'main.php' );

exit;

}

это все выполняется, а сайт больше не открывается вообще :palevo: на другом компе то же самое сделал - тоже не открывается

хотя админка mysql работает, вижу содержимое базы

Поделиться сообщением


Ссылка на сообщение

Почитай

http://habrahabr.ru/post/150267/

 

И код перед отправкой в бд надо обрамлять mysql_real_escape_string(), например $login = mysql_real_escape_string($_POST['login']);

Если у тебя в БД будет вставлять лишнюю хуйню, отключи волшебные ковычки к хуям

http://php.net/manual/ru/security.magicquotes.disabling.php


ea9cfc2a8fd28fed94eac49d3e83bf58.gif

Поделиться сообщением


Ссылка на сообщение

Почитай

http://habrahabr.ru/post/150267/

 

И код перед отправкой в бд надо обрамлять mysql_real_escape_string(), например $login = mysql_real_escape_string($_POST['login']);

Если у тебя в БД будет вставлять лишнюю хуйню, отключи волшебные ковычки к хуям

http://php.net/manua...s.disabling.php

А вот это уже вредительство, зачем советовать устаревшую практику?

Есть же няшный PDO, созданный специально для ебланов, которые не валидируют ввод.

Поделиться сообщением


Ссылка на сообщение
(изменено)

О всесильные юзеры пд!! Помогите бедному студенту,который прогуливал все занятия по инфе, и теперь его наградили заданием

Написать пример программы содержащие в себя сложенные друг-друга операций(browse,sollution и т.д).

Заранее благодарен)


Изменено пользователем Fantazio

Поделиться сообщением


Ссылка на сообщение

у меня так

if( empty( $_SESSION['userid'] ) ) {   
   if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {//catch incoming nick   
    if( !empty( $_POST['username'] ) ) {//check for existence
  $user = $_POST['username'];
  if (preg_match( "/^[_a-z\d\[\]\(\)\-\.]{2,16}$/" ,$user)) {
   $query = "SELECT `userid` FROM `user` WHERE `username` = '".htmlspecialchars( $_POST['username'] )."'";
   $r = mysql_query( $query ) or exit( mysql_error() );
   if (!$r) {
 $message  = 'Неверный запрос: ' . mysql_error() . "\n";
 $message .= 'Запрос целиком: ' . $query;
 die($message);
   }
   if( mysql_num_rows( $r ) ) {//if exists
 echo "<center>Nickname already taken.</center>";

   } else {//reg
 $query = "INSERT INTO `user`
  ( `username`, `lastactivity` )
 VALUES
  ( '".htmlspecialchars( $_POST['username'] )."',".mktime()." )";

 $result = mysql_query( $query ) or exit( mysql_error());
 if (!$result) {
  $message  = 'Неверный запрос: ' . mysql_error() . "\n";
  $message .= 'Запрос целиком: ' . $query;
  die($message);
 }
 $_SESSION['userid'] = mysql_insert_id();

 echo "<center>Привет, $_POST[username]</center>".
  setlocation( 'chat', 0, 'input.php' ).
  setlocation( 'main', 2, 'main.php' );

 echo "</body></html>";
 $query = "INSERT INTO `chat` VALUES ( $_SESSION[userid], 'User '+$_SESSION[userid]+' joined chat.', '".mktime()."' )";
 @mysql_query( $query );
   }//if( mysql_num_rows( $r ) )
  } else "<script language=javascript>alert('Неверный ник');</script>";
    }//if( !empty( $_POST['username'] ) )  
 else "<script language=javascript>alert('Введите ник');</script>";
   }

все эти алерты не работают (их убрать надо вообще, просто выводить ошибку на несколько секунд), а сама регулярка нормально пашет

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...