Javascript, AJAX och säkerhet

PHPportalen Forum Index » HTML/CSS/JavaScript/Design
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
forth



Medlem i: 754 dagar

Status: Offline



#741644
Inlägg Skrivet: 2017-04-24 18:01      Ämne: Javascript, AJAX och säkerhet Citera

Hejsan!

Är ganska ny när det kommer till Javascript/Jquery/AJAX, har hitills endast sysslat med PHP och MYSQL. Jag har gjort vad jag kan när det gäller säkerheten kring mina PHP/MYSQL-script men när det kommer till min Javascript så är jag total nybörjare.

Har ett par externa .js filer med globala ajax funktioner. Låt säga att min script.js ser ut såhär:

KOD:
1:
var isloading = 0;
2:
 
3:
function bytsida(sida)
4:
{
5:
   if(isloading==0)
6:
   {
7:
      $.ajax({
8:
            type:"post",
9:
            url:"index.php?p=" + sida,
10:
            data:"",
11:
            success:function(data){
12:
               
13:
               $("#main").html(data);
14:
 
15:
            }
16:
      });
17:
      
18:
      isloading = 1;
19:
      
20:
      setTimeout(function(){
21:
         isloading = 0;
22:
         },1000)
23:
      
24:
   }
25:
}


Kan användaren välja att bara redigera koden och ta bort "isloading"-raderna, och på så sätt göra den helt onödig?

Och hur hindrar jag användaren att t.ex. skapa en oändlig loop som kallar min funktion "bytsida()"? Har försökt med att lägga funktionen innuti en funktion (scoping) men eftersom koden ligger i en extern fil så är det omöjligt att själv kalla på funktionen.

Och gällande min PHP-fil, hjälper det att använda följande runt min kod eller går den även att manipulera?

KOD:
1:
if( isset( $_SERVER['HTTP_REFERER']) )
2:
{
3:
// min kod
4:
}


Tack på förhand!
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Peppe L-G



Medlem i: 4458 dagar
Från: Mullsjö
Status: Offline



#741645
Inlägg Skrivet: 2017-04-24 19:33      Ämne: Citera

Teoretiskt sett skulle en användare kunna ändra JavaScript-koden du skickar till den, men jag tror att det i praktiken är lite bökigt att göra det "on the fly". Mycket mer troligt är att en användare med onda avsikter skriver ihop ett eget program från scratch som skickar miljontals HTTP request till din hemsida, och du kan i praktiken inte göra något annat än att ta emot dessa (du vet ju inte vem de kommer ifrån förrän du har tagit emot och tittat på dem). Men för vanliga hemsidor tror jag inte att detta brukar vara något större problem (händer ytterst sällan, personer med onda avsikter ger sig på större/mer värdefulla hemsidor).
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
forth



Medlem i: 754 dagar

Status: Offline



#741646
Inlägg Skrivet: 2017-04-24 20:44      Ämne: Citera

Peppe L-G skrev:
Teoretiskt sett skulle en användare kunna ändra JavaScript-koden du skickar till den, men jag tror att det i praktiken är lite bökigt att göra det "on the fly". Mycket mer troligt är att en användare med onda avsikter skriver ihop ett eget program från scratch som skickar miljontals HTTP request till din hemsida, och du kan i praktiken inte göra något annat än att ta emot dessa (du vet ju inte vem de kommer ifrån förrän du har tagit emot och tittat på dem). Men för vanliga hemsidor tror jag inte att detta brukar vara något större problem (händer ytterst sällan, personer med onda avsikter ger sig på större/mer värdefulla hemsidor).


Anledningen till att jag är lite orolig är för att det är en hemsida till en av mina kunder, som även kommer att inkludera en webbshop.

Jag vill i alla fall försäkra mig om att det inte är busenkelt att missbruka koden.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Koenigsegg



Medlem i: 3777 dagar

Status: Offline



#741647
Inlägg Skrivet: 2017-04-25 08:56      Ämne: Citera

KOD:
1:
while(true) {
2:
    // Ditt ajaxanrop, klippt och klistrat
3:
}


HTTP_REFERER är helt öppen för manipulation från klientens sida.
 

_________________
Aktiv frilansare inom ganska mycket som har med webben att göra Smile
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
forth



Medlem i: 754 dagar

Status: Offline



#741648
Inlägg Skrivet: 2017-04-25 09:05      Ämne: Citera

Koenigsegg skrev:
KOD:
1:
while(true) {
2:
    // Ditt ajaxanrop, klippt och klistrat
3:
}


HTTP_REFERER är helt öppen för manipulation från klientens sida.


Ok

Och hur är det gällande "isloading" i min funktion ovan, går de att radera som användare och på så sätt göra raderna helt överflödiga?

Hur skyddar jag mig i så fall från att någon stoppar in min ajax funktion i din while(true)?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Peppe L-G



Medlem i: 4458 dagar
Från: Mullsjö
Status: Offline



#741649
Inlägg Skrivet: 2017-04-25 09:47      Ämne: Citera

forth skrev:
Hur skyddar jag mig i så fall från att någon stoppar in min ajax funktion i din while(true)?

Vem som helst kan öppna upp konsolen i en webbläsare och klistra in:

KOD:
1:
while(true) {
2:
    // Ditt ajaxanrop, klippt och klistrat
3:
}


Du kan inte skydda dig mot detta; du vill att webbläsare ska kunna skicka HTTP requests till dig, annars kan de inte visa din hemsida. Du kan inte avgöra ifall en HTTP request kommer från din hemsida på ett förväntat sätt genom en vanligt besökare, eller från en besökare som är elak och försöker förstöra. I alla fall inte på ett enkelt sätt (du kan bokföra alla HTTP request du tar emot på server-sidan, och när det kommer för många från en och samma klient så börjar du ignorera dem, men du kommer fortfarande ta emot dem).

Läs mer: https://sv.wikipedia.org/wiki/Denial_of_Service
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
harald_b
Moderator



Medlem i: 4715 dagar
Från: Tavesta
Status: Offline



#741650
Inlägg Skrivet: 2017-04-25 12:30      Ämne: Citera

För att få en bild över hur enkelt det är att manipulera javascriptkod i en vanlig webbläsare så kan jag tipsa om Shift+Ctrl+C i firefox. Då kan du ändra vad du vill i dokumentträdet.

Men det kan vara bra att vara medveten om att man bara kan manipulera koden som visas och körs i den egna webbläsaren. Övriga besökare påverkas inte.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
forth



Medlem i: 754 dagar

Status: Offline



#741651
Inlägg Skrivet: 2017-04-25 16:15      Ämne: Citera

Peppe L-G skrev:
forth skrev:
Hur skyddar jag mig i så fall från att någon stoppar in min ajax funktion i din while(true)?

Vem som helst kan öppna upp konsolen i en webbläsare och klistra in:

KOD:
1:
while(true) {
2:
    // Ditt ajaxanrop, klippt och klistrat
3:
}


Du kan inte skydda dig mot detta; du vill att webbläsare ska kunna skicka HTTP requests till dig, annars kan de inte visa din hemsida. Du kan inte avgöra ifall en HTTP request kommer från din hemsida på ett förväntat sätt genom en vanligt besökare, eller från en besökare som är elak och försöker förstöra. I alla fall inte på ett enkelt sätt (du kan bokföra alla HTTP request du tar emot på server-sidan, och när det kommer för många från en och samma klient så börjar du ignorera dem, men du kommer fortfarande ta emot dem).

Läs mer: https://sv.wikipedia.org/wiki/Denial_of_Service


Ok. Jag inbillar mig att jag är mer sårbar om jag har AJAX funktioner men är det egentligen så stor skillnad mot en vanlig sida utan javascript?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Peppe L-G



Medlem i: 4458 dagar
Från: Mullsjö
Status: Offline



#741652
Inlägg Skrivet: 2017-04-25 17:36      Ämne: Citera

forth skrev:
Jag inbillar mig att jag är mer sårbar om jag har AJAX funktioner men är det egentligen så stor skillnad mot en vanlig sida utan javascript?

Nej.

Notera även att det är skillnad på säkerhet och säkerhet. Visst, du (liksom de flesta) är sårbar mot DOS-attacker, så en person med onda avsikter kan eventuellt skicka en massa HTTP request till din hemsida och få den att bli otillgänglig/krascha, men förhoppningsvis är detta ingen säkerhetsbrist (personen med de onda avsikterna kan inte komma över hemlig information).

Om du vill ha en säker hemsida, se till at du skyddar dig mot SQL injections, använder HTTPS istället för HTTP, skyddar dig mot XSS, etc.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
atam



Medlem i: 740 dagar

Status: Offline



#741681
Inlägg Skrivet: 2017-05-09 09:44      Ämne: Citera

Minifiering och JS obfuscation kan hjälp dig göra det lite svårare för besökare att läsa av JS. Det är dock "security by obscurity", dvs. ingen riktig säkerhet.
 

_________________
Webbinkomst.se
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » HTML/CSS/JavaScript/Design
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic