Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > ASP.NET 1.x och 2.x > Språk - C#

Enbart vissa tecken i filnamn, problem med TinyMCE

Timmie
Timmie

Gradering

#7943

Hejsan,
Jag använder mig utan URLRewrite och skulle behöva hjälp med att ta bort de tecken som inte får finnas med i ett filnamn.
Min idé var att göra en replace på alla tecken som inte får finnas med men det kan ju vara hur många tecken som hellst. Så kan man göra på något vis så att man tar bort alla tecken förutom a-z 0-9 och bindestreck?

Jag har tråd titeln i mitt forum som filnamn därför jag vill ta bort alla tecken som inte går för man vet aldrig vad användaren får för sig att skriva i tråd titeln.

En annan sak, jag använder mig utav TinyMCE och märkte nu att om man avaktiverar javascript så är kommer textboxen fram och man kan skriva vilka koder man vill. Finns det något smidigt sätt för att göra så att inte alla koder fungerar? Självklart så ska jag köra med ServerHTMLEncode när inlägget skrivs ut men jag kan inte komma på hur jag ska göra i min RegExp för att kunna godkänna de saker som finns. Till en länk så kan man ju t.ex ändra både färg, href osv. Och det är ju inte svårare för användaren att bara lägga in en javascript kod i onclick eller liknande.
Någon som sitter inne på en idé på hur man kan lösa det här?

Hoppas ni förstår vad jag menar,
Timmie

ID: #7943 | Skapades: 2008-05-07 19:33:16 | Tråden har 18 svar och har lästs 1622 gånger.
Sida: 1 2

voigtan
voigtan

Gradering

#7945

Om du har egna forumkoder så ser jag inte riktigt idén med att ha TinyMCE alls (personlig).

Ang forum trådnamn: Du kan ju ha exempelvis max 100 tecken i rubriken, å ä ö ersätter du till rätt sök ord: ä = ae osv.

Sen kan du alltid köra regExp replace på grupper där du inte vill ha vissa bokstäver: [^a-z] = får inte vara a-z.

Utan javascript att lägga in knapp funktion "click" blir svårt. du kan ju inte direkt använda dig av submit funktionen för att posta till samma sida som den nyss var.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #7945 | Skapades: 2008-05-07 19:41:47

Timmie
Timmie

Gradering

#7946

Jag formulerade mig lite dåligt tror jag. TinyMCE har inget med forumet att göra. Jag använder TinyMCE för att låta medlemmarna ändra sina presentationer.
Hur har ASPKoll gjort tro för att slippa att man lägger in javascript i forumet där de har TinyMCE?

Sedan så som du säger med tråd titlarna så gör jag nu. Jag gör replace på å ä ö och gör sedan replace på de tecken som jag kan komma på. Men finns det inget smidigare sätt att lösa det på? Kan man på något vänster göra en omvänd replace så den tar bort allt förutom a-z 0-9 och bindestreck?

Hoppas du förstod mig bättre nu.

ID: #7946 | Skapades: 2008-05-07 20:22:33

voigtan
voigtan

Gradering

#7947

aspkoll har inte gjort något sådant. Du kan prova stänga av Javascript och upptäcker att det är rätt fritt att posta vilken HTML tagg du vill (även om reglerna inte tillåter det).

Ja du kan ju ta regExp mönstret och replacar allt som inte finns i gruppen:

[^a-z0-9-]+

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #7947 | Skapades: 2008-05-07 20:28:04

Timmie
Timmie

Gradering

#7948

Så ASPKoll är är skadligt för XSS? Har du någon idé hur man kan lösa det med TinyMCE. Det bästa vore ju om man kunde ta bort allt som finns < > och som inte har de sakerna som jag tillåter.

Hur för man då för att teplace allt som inte finns i den gruppen? Kan du inte i .NET så går det lika bra med ASP :P

ID: #7948 | Skapades: 2008-05-07 20:31:08

voigtan
voigtan

Gradering

#7949

Tur att det verken är ASP eller .NET som gör det då.

Och nej... aspkoll splitar <script taggen> och lite annat.

Vet inte riktigt vad ditt forum handlar om men jag tar för vana att aldrig ta bort något en användare skicka, säkra innehållet och presentera det (replace < med &gt; osv).

string resultString = null;
try {
    resultString = Regex.Replace(subjectString, "[^a-z\d\-]+", "", RegexOptions.IgnoreCase | RegexOptions.Multiline);
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}
exempel på replace allt som inte är a-z0-9 och -

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #7949 | Skapades: 2008-05-07 21:06:10

Timmie
Timmie

Gradering

#7956

Jag tar bara bort de tecken som man inte kan ha när jag skriver ut länken till tråden. Tack så mycket det fungerar.

När det gäller TinyMCE hur tycker du jag ska göra där då? Ska jag splitta en <script> tag och vad kan jag göra mer? Det finns ju fortfarande risk för att en användare lägger in en länk och sedan gör något dumt med onclick eller liknande. Men det borde ju gå att göra så som du visade med forum länken. Att man tar bort allt mellan < och > som inte tillåter det som jag vill. Hur skulle det kunna se ut?

ID: #7956 | Skapades: 2008-05-07 21:54:10

voigtan
voigtan

Gradering

#7958

om du har egna koder för html koder [b],[u] osv så ser jag inte något problem att bara ersätta  < > med &gt, &lt; när du skall presentera innehållet från användaren. Vad händer om vi säger att någon på forumet vill visa en HTML kod exempelvis.. då kommer <b> bli b osv... man skall aldrig "förstöra" datan från användaren. ser inga problem med det + att du se till att dom inte kan infoga bilder som kör farliga scripts också.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #7958 | Skapades: 2008-05-07 22:05:19

Timmie
Timmie

Gradering

#7960

I forumet så kör jag med [b] osv. Men sen på presentationen så använder jag inget sådant. Min tanke var att använda TinyMCE när de ska redigera sin profil så att de kan få en lättare översikt i hur det ska se ut. Det finns folk som vill att profilen ska se snygg ut och vill kunna se hur det blir på direkten genom att bara trycka på några knappar och ändra de som om det vore i Word.

Men det är som du säger, men ska aldrig ändra det som användaren har skrivit. Det bästa sättet kanske vore om jag gjorde så att medlemmarna får skriva kodet istället för att få det som i Word.

Tack för hjälpen, sätter tråden som löst om ingen annan har något att tillägga.

ID: #7960 | Skapades: 2008-05-07 22:16:51

voigtan
voigtan

Gradering

#7962

Du kan göra det "enkelt" för dig... du kan godkänna vissa HTML koder och spärra alla andra, är otroligt enkelt med RegExp. Kan snickra ihop ett exempel om det är av intresse.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #7962 | Skapades: 2008-05-07 22:23:44

Timmie
Timmie

Gradering

#7963

Ja tack det vore välldigt snällt!

ID: #7963 | Skapades: 2008-05-07 22:36:25

voigtan
voigtan

Gradering

#7964

string resultString = null;
try {
    resultString = Regex.Replace(subjectString, "&lt;(/?(a|b|i)( ?(href|style|id|class)=(&quote|').*?(&quote|'))?)&gt;", "<$1>", RegexOptions.IgnoreCase | RegexOptions.Multiline);
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}
snabbt exempel på a,b och i tagg med href,id,style,class taggar i dessa som är godkända (och även avslutande taggar). Går att göras bättre men en enkel kod som borde göra det mesta. (och då skall det också vara id="hej" eller id='hej' (&quote; kan göras som en ersättning tidigare och då använder du bara " istället.


Kom på lite andra "fel" den kan generera:

background('') kommer bryta mönstret även om du kör "" i början.. .NET regExp är betydligt bättre än ASP/VB 6.0 får kolla upp lite saker för att fixa det.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #7964 | Skapades: 2008-05-07 22:47:09

Timmie
Timmie

Gradering

#7965

Det vill sig inte riktigt, det fungerar med t.ex a om det inte har href i sig utan enbart står <a></a> men om det står <a href=""></a> så fungerar det inte. Då så skrivs det ut som vanlig text.

 

ID: #7965 | Skapades: 2008-05-07 23:16:44

voigtan
voigtan

Gradering

#7966

Du får konvertera " till &quote; först. eller ersätta quote; i regExp till " eller \"


Men det finns bättre sätt att skriva detta RegExp i .NET ska se om jag hittar artiklen och kanske skriver om koden helt.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #7966 | Skapades: 2008-05-07 23:20:03

Timmie
Timmie

Gradering

#7967

Problemet är fortfarande kvar,märkte nu att den tar bort slut tagen som det är t.ex style="" i tagen. Är det jag som har missuppfattat dig fel?

ID: #7967 | Skapades: 2008-05-07 23:35:46

voigtan
voigtan

Gradering

#7968

Precis... den har buggar... snabb exempel på hur det _kan_ fungera. ASP.NET (och många andras RegExp) har look-a-head mönster med så det är det jag ska försöka hitta

http://aspnet.4guysfromrolla.com/ar...s/022603-1.aspx

För lite tips och trix

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #7968 | Skapades: 2008-05-07 23:39:29
Sida: 1 2
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy