Sari la conținut

[Tutorial] Anti SQL Injection - O alta metoda


Postări Recomandate

Postat

Bun deci, acest system nu este facut de mine, stiu ca a mai postat si David o modalitate, dar vreau sa va arat si altfel cum se poate face, este cat de cat asemanator.

 

Pentru inceput trebuie sa adaugati mai sus in gamemode urmatorul cod:

 

static const antisqlinjection[][] =
{
    "'",
    "#",
    "`",
    "%s",
    "%d",
    "%f"
};

 

function CheckCharacters(string[]);
public CheckCharacters(string[])
{
    for(new i; i < sizeof(antisqlinjection); i++)
    {
        if(strfind(string, antisqlinjection, true) != -1)
        {
            return 1;
         }
    }
    return 0;
}

 

 

Bun, acum in orice comanda vom adauga urmatorul cod:

 

if(CheckCharacters(string)) return SendClientMessage(playerid, COLOR_WHITE, "* Te rugam sa nu folosesti charactere speciale.");

 

Exemplu:

CMD:changepassword(playerid, params[])
{
    new parola[256];
    if(sscanf(params, "s[256]", parola)) return SCM(blabla);
    if(CheckCharacters(parola)) return SCM(playerid, COLOR_FADE1, "* Te rugam sa nu folosesti c
aractere interzise.");
    return 1;
}

 

Daca folositi exemplul dat mai sus aveti toate comenzile protejate asupra injectiilor,  acum hai sa ajutam si dialog-urile.

 

Adaugam mai sus in gamemode:

 

* Acum trebuie sa schimbati peste tot prin gamemode din ShowPlayerDialog in ShowPlayerDialogEx *

new dDialogID[MAX_PLAYERS];
new dDialogStyle[MAX_PLAYERS];
new dDialogCaption[MAX_PLAYERS][256];
new dDialogInfo[MAX_PLAYERS][256];
new dDialogButton1[MAX_PLAYERS][256];
new dDialogButton2[MAX_PLAYERS][256];

forward ShowPlayerDialogEx(playerid, dialogid, style, caption[], info[], button1[], button2[]);
public ShowPlayerDialogEx(playerid, dialogid, style, caption[], info[], button1[], button2[])
{
    dDialogID[playerid] = dialogid;
    dDialogStyle[playerid] = style;
    format(dDialogCaption[playerid], 256, caption);
    format(dDialogInfo[playerid], 256, info);
    format(dDialogButton1[playerid], 256, button1);
    format(dDialogButton2[playerid], 256, button2);
    ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
    return 1;
}

 

 

Acum ultimul pas ramas este sa adaugam urmatoarea verificare la inceputul OnDialogResponse

 

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dDialogStyle[playerid] == DIALOG_STYLE_INPUT)
    {
        for(new i; i < sizeof(antisqlinjection); i++)
        {
            if(strfind(inputtext, antisqlinjection, true) != -1)
            {
                 SendClientMessage(playerid, COLOR_WHITE, "* Te rugam sa nu folosesti charactere speciale in dialog.");
                 ShowPlayerDialogEx(playerid, dDialogID[playerid], dDialogStyle[playerid], dDialogCaption[playerid], dDialogInfo[playerid], dDialogButton1[playerid], dDialogButton2[playerid]);
                return 1;
             }
        }
    }
return 0;
}

 

 

 

Sper ca a fost de folos ceea ce am postat aici .

Postat

Frumos +1

Felicitari pentru munca depusa!

Postat

Bun tutorial, +1.

Foarte folositor! :)

Vizitator
Acest subiect este acum închis pentru alte răspunsuri.
  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.
×
×
  • Creează nouă...