Har funderat på det här lite och undrar om det finns någon logik bakom det. Det verkar inte finnas någon logik bakom det förutom att den enda skillnaden är att man kan fylla i flera rader med text och är därför avsett för större textmängder (bloggar, kommentarer m m). <b>>Tittar du i rubriken på den här tråden (från nytt på siten), ser du ett hål som inte är igentäppt.</b> Källkoden visar att det ligger ett input element (som man faktiskt kan skriva text i, om du kollar från "Nytt på sajten" från startsidan). Snarare lite irriterad.. Man kunde lagt gränsen vid ett inlägg ;) Det är inte så lätt att få med allt. Själv har jag byggt upp en mycket liten blogg-portal i PHP. Inklusive test och bugfix tog det 400 timmar att implementera. Den här sajten har säkert >5'000 timmars arbete bakom sig, så att något litet fält från ett särskilt håll inte fungerar är inte konstigt. Eftersom vi ändå håller på och spårar ur här :p Mja, kanske inte just striptags (det kan man dock skriva en enkel regexp som gör, att ta bort taggar alltså), men man kan enkelt se till att html-escape:a alla "farliga" tecken typ < > & etc, och det är väl det som är missat i just det här fallet. <b>Troligtvis använder man den för att man är lat, eller för att man fått för sig att det är jättehemskt att fråga databasen vid varje sidladdning om personuppgifterna.. Bättre är dock (oftast) att skippa viewstate och istället ladda datan vid varje sidladdning.</b> Det är inte riktigt så enkelt iofs.. <b>worst case scenario: alla tittar på samma data, men har en egen kopia i sin egna session</b> Inte vet jag vad du syftade på när du skrev: Jag tror ni båda har rätt, man bör använda flera olika säkerheter Pellesoft är skriven i asp.net och sparar antagligen innehållet med specialtecken i databasen för att sedan köra någon typ av htmlencode vid utskrift. Men eftersom pelle har glömt det på vissa ställen (nytt på siten t.ex.) så skrivs htmlkoden ut. Per: I regel så struntar man i allt vad cache heter tills man _vet_ var det blir/kommer bli problem. Viktigare för prestandan är ofta sidstorleken. När det väl _är_ ett problem med hastigheten så får man börja titta på lösningar. (Oavsett när problemet upptäcks, i produktion, eller när man testar systemet) <b>Per: I regel så struntar man i allt vad cache heter tills man _vet_ var det blir/kommer bli problem.</b> Det började med att jag sa att man i regel undviker viewstate, du tyckte att man skulle kunna lägga data i sessionstate (dvs. cacha) Från samma stycke som du pratade om att undvika viewstate: Ja? Har jag skrivit att man <b>skall</b> cacha? Jag gav bara ett förslag på var man kan spara informationen <b>om</b> man cachar.Varför är inte textarea och select -element?
textfält, checkboxar, radiobuttons och lösenordsfält är alla <input>-objekt. Men varför skiljer sig texarea och select genom att ha sina egna taggar?
Eller så kan man kasta om frågan, varför finns det inte <checkbox> <radio> och <password>-taggar?Sv:
http://reference.sitepoint.com/html/textarea
Tittar du i rubriken på den här tråden (från nytt på siten), ser du ett hål som inte är igentäppt. I PHP gör man det med metoden strip_tags. Hur det ska göras i asp har jag ingen aning om, men något som Pelle bör titta på för att undvika SQL-inject attacker.
http://de.php.net/striptagsSv:
Skeptisk; kolla källkoden.Sv:
Sv: <input style="background: lime; color: red" value="asp">
<!-- är detsamma som -->
Sv: <input style="background: lime; color: red" value="asp">
Hur man löser det med asp har jag ingen aning om, men i källkoden bör vi inte kunna se vilka kontroller som görs. Det är i de asp-filer som finns bakom som den här justeringen ska göras. Därefter packas sidan ihop till en .aspx sida som är det vi kan se i källkoden. Åtminstome är det så php fungerar. Rätta mig gärna om asp använder en annan teknik...?!
Sv:
[edit]Fast jag måste ju erkänna att det var något nytt på siten.. ;)[/edit]Sv:
Det är nog snart fixat :)Sv:
Har märkt att det tar mycket mycket längre att bygga siter i php än i asp.net.
asp.net har så grymt många färdiga funktioner och en väldigt skön koppling mellan html och code-behind. Skulle bli rätt förvånad om det inte finns någon enkel strip-tags funktion.
Men hur stor skillnad är det i prestandan och sid-storleken. Med asp.net skickas väl hela viewstaten till användaren och en hel del javascripts också. Så sidorna blir väl mycket större än sidor kodade i php?Sv:
När det gäller prestanda och sidstorlek: viewstaten är något mycket fult i de flestas ögon, och det är i regel någonting man undviker. Troligtvis använder man den för att man är lat, eller för att man fått för sig att det är jättehemskt att fråga databasen vid varje sidladdning om personuppgifterna.. Bättre är dock (oftast) att skippa viewstate och istället ladda datan vid varje sidladdning. Om prestandan blir ett problem så kan man börja titta på att cacha datan på servern istället.
När det gäller javascript så är det nog ingen skillnad, det är bara en fråga om hur mycket skrot du laddar. Du behöver inte ladda en massa script, men du kan, precis som i php.Sv:
Eftersom man ändå i detta fall använder en sessionskaka, kan man ju spara informationen i sessionen.Sv:
1) Du käkar rätt snabbt upp allt ram på servern om du ska sitta och cacha på det viset (worst case scenario: alla tittar på samma data, men har en egen kopia i sin egna session)
2) Du löser inte problemet att samma session kan ha flera fönster uppe. Det går iofs att lösa genom att lägga med en nyckel som identifierar viewstaten, och sedan ha en hashtable eller liknande i sessionen. Du kommer dock inte ifrån problemet att datan i sessionstaten kan vara inaktuell men ändra käka ram på servern
Att börja trassla med viewstate i sessionstate är som att be om problem, bättre är att hålla sig till att plocka direkt ifrån datakällan, och om det blir för segt, börja fundera på att cacha. Men förslagsvis inte i sessionstate utan i den vanliga cachen, eller genom att lagra viewstaten i t.ex. en databas, och sedan koppla mot en nyckel. Sv:
Alla besökare har knappast samma persondata. Det var nämligen det du skrev att man skulle hämta från databasen. Det var således det jag svarade på.
<b>Du löser inte problemet att samma session kan ha flera fönster uppe.</b>
Gör man det genom att hämta persondata från databasen då? Det var nämligen det du skrev att man skulle göra, och det var det jag svarade på.Sv:
<b>När det gäller prestanda och sidstorlek: viewstaten är något mycket fult i de flestas ögon, och det är i regel någonting man undviker. Troligtvis använder man den för att man är lat, eller för att man fått för sig att det är jättehemskt att fråga databasen vid varje sidladdning om personuppgifterna.</b>
Du kan väl förklara själv vad du menade?
Som så ofta är lämpligt val säkerligen beroende av situationen. Om man har extremt många som är inloggade samtidigt, men som inte är särskilt aktiva med att hämta nya sidor, kanske det är bättre att hämta uppgifterna varje gång. Men om man i stället har få besökare som dock är väldigt aktiva, kan det vara bättre att cacha.Sv:
<code>
mysql_real_escape_string #Escapes special characters in a string for use in a SQL statement
strip_tags #Strip HTML and PHP tags from a string
htmlspecialchars #Convert special characters to HTML entities
htmlspecialchars_decode #Convert special HTML entities back to characters
</code>
Här verkar det som man använt <b>htmlspecialchars</b> men inte <b>htmlspecialchars_decode</b> för att återkonvertera till html. Strip_tags verkar tillåta <input>-element, eller så används den inte alls. Huruvida <b>mysql_real_escape_string</b> används är osäkert, men sannolikt.
Men vi vet inte om det är MySQL som används eller någon annan DBMS, så spekulationerna får sägas utgå ifrån en konceptuell modell.Sv:
Sv:
Sv: Varför är inte textarea och select -element?
Ja...? Det var du som började prata om att cacha, inte jag.Sv:Varför är inte textarea och select -element?
Sv: Varför är inte textarea och select -element?
<b>Om prestandan blir ett problem så kan man börja titta på att cacha datan på servern istället.</b>
Alltså var det <b>du</b> som började prata om att cacha.Sv: Varför är inte textarea och select -element?