Forum > ASP.NET 1.x och 2.x > Språk - C#
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
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.
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.
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-]+
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
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 > 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
}
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?
om du har egna koder för html koder [b],[u] osv så ser jag inte något problem att bara ersätta < > med >, < 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å.
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.
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.
Ja tack det vore välldigt snällt!
string resultString = null;
try {
resultString = Regex.Replace(subjectString, "<(/?(a|b|i)( ?(href|style|id|class)=("e|').*?("e|'))?)>", "<$1>", RegexOptions.IgnoreCase | RegexOptions.Multiline);
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
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.
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.
Du får konvertera " till "e; 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.
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?
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