Polish Bittorrent Tracker Support

  • Maj 18, 2012, 03:32:08
  • Witamy, Gość
Zaloguj się lub zarejestruj.

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Szukanie zaawansowane  

Aktualności:

Autor Wątek: Bezpieczny tracker  (Przeczytany 3817 razy)

0 użytkowników i 2 Gości przegląda ten wątek.

nowyyy31

  • Średnio zaawansowany
  • ****
  • Reputacja 2
  • Offline Offline
  • Płeć: Mężczyzna
  • Wiadomości: 94
Odp: Bezpieczny tracker
« Odpowiedź #40 dnia: Wrzesień 08, 2008, 03:17:03 »

//---------------------------------
//---- Max. Sysops v0.2 by xam
//---------------------------------

function maxsysop () {
global $CURUSER;
$lmaxclass  = 5; // Minimalna ranga od jakiej ma to obowiazywac (zalecam, mod, admin, sysop, czyli podajemy numerek jaki ma moderator)
$lsysopnames = array("Sysop", "admin", "mod", "mod2"); // Lista osób ktore sa leganie w zalodze.
    if ($CURUSER["class"] >= $lmaxclass)
        if (!in_array($CURUSER["username"], $lsysopnames)){
        mysql_query("UPDATE users set enabled='no' WHERE id=$CURUSER[id]");
            stderr("Przepraszamy","Korzystasz z nie dozwolonego konta, dlatego zostałe¶ zbanowany, papa :)");
}
}

//---------------------------------
//---- Max. Sysops v0.2 by xam
//---------------------------------

//---- Max. Sysops and Admins v0.1 by xam
function maxsysop () {
global $CURUSER;
$lmaxsysop = 4; // How many sysop account on your website? write here..
$lmaxclass  = 6; // Max. Class, e.g: mine is: define ("UC_SYSOP", 8);
$lsysopnames = array("Admin"); // Case sensitive.
$query = mysql_query("SELECT COUNT(id) AS total FROM users WHERE class >= $lmaxclass")  or sqlerr(__FILE__, __LINE__); // get total sysops
list($info['maxsysop']) = mysql_fetch_row($query); // list

if ($info['maxsysop'] > $lmaxsysop)
    if ($CURUSER['class'] >= $lmaxclass)
      if (!in_array($CURUSER["username"], $lsysopnames)){
      write_log(htmlstrip($CURUSER['username'])." changed themselves to class ".htmlstrip($CURUSER['class']).". Current page: $_SERVER[PHP_SELF], previous page: $_SERVER[HTTP_REFERER]");
       mysql_query("UPDATE users set enabled='no' WHERE id=$CURUSER[id]");
      $msg="Fake Account Detected: Username: [url=userdetails.php?id=".$CURUSER["id"]."]".$CURUSER["username"]."[/url] - UserID: ".$CURUSER["id"]." - UserIP : ".getip();
      $subject="Fake account detected, greater than SysOp!";
      mysql_query("INSERT INTO messages (poster, sender, receiver, added, msg, subject) VALUES(0, 0, 1, '" . get_date_time() . "', " .sqlesc($msg) . ", ".sqlesc($subject).")") or sqlerr(__FILE__, __LINE__);
        stderr("Locked!","We come to believe you are using a fake account, therefore we've logged this action, and disabled your account!"); // die
        }
if(get_user_class() >= UC_MODERATOR){
   $adminids = array(5,x,xx);    // put your admins id in here like this (1,1553,956,12414)
   if (!in_array($CURUSER['id'], $adminids)){
        write_log(htmlstrip($CURUSER['username'])." changed themselves to class ".htmlstrip($CURUSER['class']).". Current page: $_SERVER[PHP_SELF], previous page: $_SERVER[HTTP_REFERER]");
        mysql_query("UPDATE users set enabled='no' WHERE id=$CURUSER[id]");
        $msg="Fake Account Detected: Username: [url=userdetails.php?id=".$CURUSER["id"]."]".$CURUSER["username"]."[/url] - UserID: ".$CURUSER["id"]." - UserIP : ".getip();
      $subject="Fake account detected, not a Mod+!";
      mysql_query("INSERT INTO messages (poster, sender, receiver, added, msg, subject) VALUES(0, 0, 1, '" . get_date_time() . "', " .sqlesc($msg) . ", ".sqlesc($subject).")") or sqlerr(__FILE__, __LINE__);         
       stderr("Locked!","We come to believe you are using a fake account, therefore we've logged this action, and disabled your account!");
   }
}
}

która wersja jest lepsza ?
Zapisane

tuno12

  • Coder
  • Super zaawansowany
  • ******
  • Reputacja 19
  • Offline Offline
  • Płeć: Mężczyzna
  • Wiadomości: 860
  • Krytyk i Tester
Odp: Bezpieczny tracker
« Odpowiedź #41 dnia: Wrzesień 08, 2008, 07:02:55 »

pierwsza ma mniej bajerów ale chyba daje mniejsze obciążenie, ale druga za to daje większe zabezpieczenie
Zapisane




Nawet nie próbuj pisać na PW etc.

nowyyy31

  • Średnio zaawansowany
  • ****
  • Reputacja 2
  • Offline Offline
  • Płeć: Mężczyzna
  • Wiadomości: 94
Odp: Bezpieczny tracker
« Odpowiedź #42 dnia: Wrzesień 22, 2008, 06:44:34 »

bezpieczniejsze funkcje "stdmsg stderr"
źródło
http://www.tbdev.net/index.php?s=&showtopic=1031&view=findpost&p=128663


function stdmsg($heading, $text, $htmlstrip = TRUE)
{
    if ($htmlstrip) {
        $heading = htmlspecialchars($heading);
        $text = htmlspecialchars($text);
    }
    print("<table class=main width=750 border=0 cellpadding=0 cellspacing=0><tr><td class=embedded>\n");
        if ($heading)
            print("<h2>$heading</h2>\n");
    print("<table width=100% border=1 cellspacing=0 cellpadding=10><tr><td class=text>\n");
    print($text . "</td></tr></table></td></tr></table>\n");
}


function stderr($heading, $text, $htmlstrip = TRUE)
{
  stdhead();
  stdmsg($heading, $text, $htmlstrip);
  stdfoot();
  die;
}
« Ostatnia zmiana: Wrzesień 22, 2008, 06:49:10 wysłana przez nowyyy31 »
Zapisane

siwy21

  • Początkujący+
  • **
  • Reputacja 1
  • Offline Offline
  • Płeć: Mężczyzna
  • Wiadomości: 15
  • Sprzedam opla
Odp: Bezpieczny tracker
« Odpowiedź #43 dnia: Luty 13, 2010, 08:44:02 »

Witam :)

 Taka małą podpowiedź ode mnie :)

Wpisy typu:

$res = mysql_query("SELECT forumid FROM topics WHERE id=$topicid") or sqlerr(__FILE__, __LINE__);
w których wiemy, że zmienne mogą przyjmować tylko i wyłącznie wartości liczbowe możemy znacznie prościej przekształcić na

$res = mysql_query("SELECT forumid FROM topics WHERE id=". (int)$topicid) or sqlerr(__FILE__, __LINE__);
to przykład dla przypadków, kiedy wiemy, że może tam być tylko i wyłącznie liczba całkowita (inaczej int wstawi tam 0). Jeżeli zmienna może mieć wartość "z ułamkiem" to stosujemy:

$res = mysql_query("SELECT forumid FROM topics WHERE id=". 0+$topicid) or sqlerr(__FILE__, __LINE__);
(A tak ogólnie to powinno sie zabezpieczać zmienne na samym początku czyli wszystkie linie typu '$id = $_GET["id"];' odrazu przerabiamy na  '$id = (int)$_GET["id"];' bądź:  '$id = 0+$_GET["id"];' :P

2. Sprawa to HTMLENTITES :)

 O wiele lepiej jest zastosować htmlspecialchars z dwóch powodów:
 
 1. htmlspecialchars w przeciwieństwie do htmlentities nie jest zależne od kodowania strony (szczególnie ważne gdy mamy jakieś nietypowe, htmlentities traktuje je wtedy jako ISO8859-1)

 2. htmlspecialchars jest troszke dokładniejsze ;) Poniżej przykład:

 <?php
$str 
"A 'quote' is bold";
echo 
htmlentities($str); // zwr&#243;ci: A 'quote' is &lt;b&gt;bold&lt;/b&gt; 
echo htmlspecialchars($str); // zwr&#243;ci: A &#38;#039 ;quote&#38;#039 ; is &lt;b&gt;bold&lt;/b&gt; 
?>
htmlspecialchars dodatkowo zajmuje się nam apostrofami ;)


 Porównajcie sobie kodzik na serwerze u siebie jeżeli nie wierzycie ;) htmlentities ma sens jeżeli stosujecie je w formie htmlentities($str, ENT_QUOTES) ale o tym poczytać na http://php.net ;)


Zapisane
 

Strona wygenerowana w 0.208 sekund z 23 zapytaniami.