Classic ASP Post to MS Access DB - Doesen't Work from Textarea Editor -


i use textarea modifyed tinymce when send form new.asp "new post" page, won't upload content server.

that error...

microsoft office access database engine error '80040e14'  syntax error (missing operator) in query expression ''<p>-: cleaned :-</p> <p> </p> <h2><a name='"_toc421990132'"></a>1)     la sicurezza</h2> <p> </p> <p'.  /tesina/argomenti/new.asp, row 18 

i tryed deal special characters in asp try out if issue, apparently it's not;

i tryed upload text copy/pasting word, doesen't work, tryed notepad++, worked once plain text , no styling @ all.

html form...

<form id="newar" action="new.asp" method="post">                                 <div class="institle">                                     <span> titolo dell'argomento: </span>                                     <input type="text" name="txttitle" placeholder="titolo">                                 </div>                                 <div class="institle">                                     <span> sottotitolo dell'argomento: </span>                                     <input type="text" name="txtsubtitle" placeholder="sottotitolo">                                 </div>                                 <div class="institle">                                     <span> scegli la materia </span>                                     <%                                         dim id_materia, nomemateria, rs, strconn, conn                                          strconn = "provider=microsoft.ace.oledb.12.0;data source=" & server.mappath("../database/tesina.accdb")                                          set conn = server.createobject("adodb.connection")                                         set rs = server.createobject("adodb.recordset")                                          conn.open strconn                                          set rs = conn.execute ("select * materia")                                              if not rs.eof                                     %>                                             <select name="txtmateria">                                     <%                                                 rs.movefirst                                                  while not rs.eof                                                     id_materia = rs.fields("id_materia")                                                     nomemateria = rs.fields("nomemateria")                                     %>                                                 <option value="<%=id_materia%>"> <%=nomemateria%> </option>                                     <%                                                 rs.movenext                                                 loop                                     %>                                             </select>                                     <%                                                  rs.close                                                 conn.close                                                 set rs = nothing                                                 set conn = nothing                                              else                                                   rs.close                                                 conn.close                                                 set rs = nothing                                                 set conn = nothing                                                  response.write("nessun record disponibile")                                              end if                                 %>                                 </div>                                 <div class="editor">                                     <textarea class="editor" id="editor" name="editor">                                     </textarea>                                 </div>                                 <div class="institleup">                                     <div id="filelist"> &nbsp; </div>                                     <div id="container">                                         <div id="dragdrop">                                              <span> drag &amp; drop </span>                                         </div>                                         <div id="buttons">                                             <button id="pickfiles" href="javascript:;"> browse images </button>                                             <button id="uploadfiles" href="javascript:;"> upload images </button>                                         </div>                                     </div>                                     <pre id="console"></pre>                                     <script type="text/javascript">                                          var uploader = new plupload.uploader({                                            runtimes : 'html5,flash,silverlight,html4',                                            browse_button : 'pickfiles',                                            container: document.getelementbyid('container'),                                            drop_element: "dragdrop",                                            url : 'upload/upload.asp',                                            flash_swf_url : '../js/moxie.swf',                                            silverlight_xap_url : '../js/moxie.xap',                                             filters : {                                               max_file_size : '2mb',                                               mime_types: [                                                  {title : "image files", extensions : "jpg,gif,png"},                                                ]                                            },                                            init: {                                            postinit: function() {                                                                                                      document.getelementbyid('filelist').innerhtml = '';                                                                                      document.getelementbyid('uploadfiles').onclick = function() {                                                     uploader.start();                                                     return false;                                                 };                                            },                                             filesadded: function(up, files) {                                                 plupload.each(files, function(file) {                                                                                                     document.getelementbyid('filelist').innerhtml += '<div id="' + file.id + '">' + file.name + ' (' + plupload.formatsize(file.size) + ') <b></b></div>';                                                  });                                            },                                             uploadprogress: function(up, file) {                                                                                       document.getelementbyid(file.id).getelementsbytagname('b')[0].innerhtml = '<span>' + file.percent + "%</span>";                                                  },                                            error: function(up, err) {                                               document.getelementbyid('console').appendchild(document.createtextnode("\nerror #" + err.code + ": " + err.message));                                            }                                           }                                         });                                         uploader.init();                                          uploader.bind('fileuploaded', function(up, file, info) {                                             var obj = json.parse(info.response);                                                 $('form#newar').append('<input type="hidden" name="hidimage" value="' + obj.result.filename + '" />');                                         });                                     </script>                                 </div>                                 <div id="submit">                                     <input type="submit" value="inserisci form">                                 </div>                             </form>          

asp code in response page.. (new.asp)

<% if session("amministratore") = "true"     dim titolo, sottotitolo, testobase, testoquote, testoless, testogreat, testoslash, id_materia, strconn, conn         titolo = request.form("txttitle")         sottotitolo = request.form("txtsubtitle")         testobase = request.form("editor")         id_materia = request.form("txtmateria")          testoquote = replace(testobase,chr(34), "&#39;" & "&#34;")         testoless = replace(testoquote,chr(60), "&#60;")         testogreat = replace (testoless, chr(62), "&#62;")         testoslash = replace (testogreat, chr(47), "&#47;")          strconn = "provider=microsoft.ace.oledb.12.0;data source=" & server.mappath("../database/tesina.accdb")         set conn = server.createobject("adodb.connection")          conn.open strconn         conn.execute ("insert argomento (titolo, sottotitolo, testo, id_materia) values ('" & [titolo] & "', '" & [sottotitolo] & "', '" & [testoslash] & "', " & [id_materia] & ")")          conn.close                   set conn = nothing          response.redirect ("argomentiadm.asp")  else      response.redirect ("../homepage.asp")  end if %> 

my db follows...

table1: argomento [topic]    id_argomento (auto_inc, primarykey)    titolo [title] (short string 255chr)    sottotitolo [subtitle] (short string 255chr)    testo [text] ( long string )    id_materia (id_subject) (integer, foreignkey ref. materia)  table2: materia [subject]    id_materia (auto_inc, pk)    nomemateria (short string ) 

edit.

modifyed asp, which, eventhough checked on internet, doesen't work htmlencode, or well, atleast far can see.

if session("amministratore") = "true"     dim titolo, sottotitolo, testo, id_materia, strconn, conn         titolo = server.htmlencode(request.form("txttitle"))         sottotitolo = server.htmlencode(request.form("txtsubtitle"))         testo = server.htmlencode(request.form("editor"))         id_materia = request.form("txtmateria")          'testoquote = replace(testobase,chr(34), "&#39;" & "&#34;")         'testoless = replace(testoquote,chr(60), "&#60;")         'testogreat = replace (testoless, chr(62), "&#62;")         'testoslash = replace (testogreat, chr(47), "&#47;")          strconn = "provider=microsoft.ace.oledb.12.0;data source=" & server.mappath("../database/tesina.accdb")         set conn = server.createobject("adodb.connection")          conn.open strconn         response.write ("conn.execute ""(""insert argomento (titolo, sottotitolo, testo, id_materia) values ('" & [titolo] & "', '" & [sottotitolo] & "', '" & [testo] & "', " & [id_materia] & ")"")")             'conn.execute ("insert argomento (titolo, sottotitolo, testo, id_materia) values ('" & [titolo] & "', '" & [sottotitolo] & "', '" & [testo] & "', " & [id_materia] & ")")         response.end          conn.close                   set conn = nothing          'response.redirect ("argomentiadm.asp")  else      response.redirect ("../homepage.asp")  end if 

and response.write of whole submit here...

  conn.execute "("insert argomento (titolo, sottotitolo, testo, id_materia) values ('crittografia moderna', 'cos’è la crittografia? definizione, utilizzo ed implementazione', '<p>-: cleaned :-</p> <h1><a name="_toc421990131"></a>informatica: cos&#8217;&#232; la crittografia? definizione, utilizzo ed implementazione</h1> <p>&#160;</p> <h2><a name="_toc421990132"></a>1)&#160;&#160;&#160;&#160; la sicurezza</h2> <p>&#160;</p> <p>la <strong>sicurezza</strong> di un sistema informatico pi&#249; o meno complesso indica il grado di tutela dello stesso e degli utenti utilizzatori, analizzando cinque parametri fondamentali &#232; possibile quindi capire su quali elementi deve concentrarsi l&#8217;azione di difesa per non incorrere in problemi economici o legali:</p> <p>&#160;</p> <ul> <li><strong>affidabilit&#224; dei dati </strong>&#8211; facolt&#224; di un sistema informatico di permettere una continuativa ed ininterrotta disponibilit&#224; dei dati;</li> </ul> <p>&#160;</p> <ul> <li><strong>integrit&#224; dei dati</strong> &#8211; fondamentale per il sistema informatico &#232; di evitare qualsiasi forma di corruzione dei dati;</li> </ul> <p>&#160;</p> <ul> <li><strong>riservatezza </strong>&#8211; il sistema informatico deve essere in grado di stabilire delle &#8220;viste&#8221;, ossia di mostrare dati solo agli utenti autorizzati;</li> </ul> <p>&#160;</p> <ul> <li><strong>autenticazione ed autenticit&#224;</strong> &#8211; sorgente, destinazione e contenuto di un messaggio sono sempre disponibili e certe;</li> </ul> <p>&#160;</p> <ul> <li><strong>non ripudio dell'operazione</strong> &#8211; impossibile per gli utenti negare di aver ricevuto o inviato un determinato messaggio;</li> </ul> <p>&#160;</p> <p>&#160;</p> <h2><a name="_toc421990133"></a>2)&#160;&#160;&#160;&#160; la crittografia</h2> <p>&#160;</p> <p>la <strong>crittografia </strong>&#232; una scienza che si occupa di &#8220;<strong>studiare le scritture nascoste</strong>&#8221;, la quale permette di codificare un messaggio, fornendo garanzie superiori mittente e destinatario sulla base quale tecnica crittografica viene applicata alla comunicazione, scegliendo quindi accuratamente quali parametri della sicurezza si vogliano garantire;</p> <p>&#160;</p> <p>la crittografia di ambito informatico tiene conto della <strong>velocit&#224; di calcolo</strong> dei moderni dispositivi, escludendo di fatto l&#8217;efficacia di ogni cifrario sostitutivo, estremamente presenti nella storia ma abbandonati con l&#8217;avvento degli elaboratori;</p> <p>&#160;</p> <p>l'utente si trova quindi obbligato scegliere algoritmi fondati su <strong>leggi matematiche</strong> basate su analisi e rapporti tra numeri primi costituiti da una quantit&#224; di cifre estremamente elevate.</p> <p>in crittografia il "<strong>cifrario</strong>&#8221; &#232; lo strumento che contiene le istruzioni che permettono di trasformare il "testo in chiaro" in "testo crittografato" o viceversa, meno che l'algoritmo contenuto nel cifrario non sia classificato come "<strong>one-way hash</strong>", in quest&#8217;ultimo caso &#232; impossibile risalire da un testo cifrato ad un corrispondente univoco testo in chiaro, in quanto qualsiasi tentativo di decriptazione otterrebbe numerose possibili alternative;</p> <p>&#160;</p> <p>&#160;</p> <h3><a name="_toc421990134"></a>2.1)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; chiavi sicure e standard di cifratura</h3> <p>&#160;</p> <p>al giorno d'oggi una chiave "<strong>discretamente sicura</strong>" si aggira sui <strong>128</strong> <strong>bit</strong> per algoritmi come il <strong>des</strong> (data encryption standard) e l'<strong>aes</strong> (advanced encryption standard) che svolgono operazioni altamente complesse utilizzando algoritmi vettoriali di sostituzione applicati su blocchi di dati codificati con <strong>chiave simmetrica</strong>;</p> <p>&#160;</p> <p>lo stesso livello di sicurezza si pu&#242; ottenere con l&#8217;implementazione <strong>chiave asimmetrica</strong> attraverso il metodo matematico <strong>rsa </strong>impiegando chiavi da 1024 o pi&#249; bit, corrispondenti numeri composti da oltre 300 cifre.</p> <p>&#160;</p> <p>l'aes in particolare si affida alla ripetizione di un ciclo composto da <strong>4 operazioni</strong>:</p> <p>&#160;</p> <ul> <li><strong>sostituzione</strong> per rimuovere ogni linearit&#224;</li> </ul> <p>&#160;</p> <ul> <li><strong>spostamento degli elementi di una riga</strong> verso sinistra in base alla posizione nella matrice ipotizzata da rijndael;</li> </ul> <p>&#160;</p> <ul> <li><strong>ricombinazione delle colonne</strong> moltiplicate per una data matrice 4x4;</li> </ul> <p>&#160;</p> <ul> <li><strong>operazione di xor logico</strong> per decidere se moltiplicare o meno il risultato per una tabella data.</li> </ul> <p>&#160;</p> <p>&#160;</p> <p>grazie alla non-linearit&#224; dell'aes, conosciuto anche come &#8220;rijndael&#8221; dal nome dello sviluppatore portoghese che lo invent&#242; nel 2001, &#232; pressoch&#233; impossibile, ad oggi, risalire ad un <strong>algoritmo risolutivo univoco</strong> senza conoscere nessun dato intermedio quale il contenuto del messaggio o la grandezza dei "blocchi";</p> <p>&#160;</p> <p>la scelta di un attacco "<strong>brute-force</strong>" risulta altrettanto impossibile causa delle tempistiche richieste, che si trovano nell'ordine di svariati anni per chiavi da 128 bit ed oltre.</p> <p>&#160;</p> <p>secondo l&#8217;agenzia governativa americana &#8220;national institute of standards , technology&#8221; () ha stimato che per le informazioni classificate secret sia sufficiente una chiave 128 bit seguendo il nuovo standard aes, aumentata fino alla grandezza di 192 o 256 bit per informazioni classificate top secret, garantendo quindi che ogni attacco tali chiavi possa concludersi soltanto in un fallimento per prossimi anni.</p> <p>&#160;</p> <p>&#160;</p> <h3><a name="_toc421990135"></a>2.2)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; oggetto elaborato durante la cifratura: blocchi o flusso</h3> <p>&#160;</p> <p>per quanto riguarda il funzionamento degli algoritmi di cifratura si delineano concetti di <strong>cifrario blocchi </strong>e di <strong>cifrario flusso</strong> che intervengono nella trasformazione da "testo in chiaro" "testo cifrato", risulta quindi necessario scegliere se utilizzare un algoritmo progettato per <strong>analizzare dei </strong>"<strong>sottoinsiemi</strong>" del messaggio trattati come singoli oggetti o se, invece, sia pi&#249; conveniente allo scopo un algoritmo che effettui la cifratura <strong>leggendo singolarmente ogni simbolo</strong> che compone il messaggio;</p> <p>nel tentativo di risalire al testo originale prendendo come punto di partenza il testo cifrato risulta invece fondamentale conoscere il metodo utilizzato per cifrare il messaggio al fine di accorciare le <strong>operazioni di decriptazione</strong>.</p> <p>&#160;</p> <p>&#160;</p> <h3><a name="_toc421990136"></a>2.3)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; chiave di cifratura: simmetrica o asimmetrica</h3> <p>&#160;</p> <p>la cifratura di un messaggio pu&#242; essere eseguita attraverso cifrari che si dividono in due categorie,<strong> cifratura chiave simmetrica</strong> (singola) o <strong>cifratura chiave asimmetrica</strong> (doppia);</p> <p>entrambi metodi evidenziano caratteristiche appropriate ad una situazione, discapito per&#242; della loro efficacia in situazioni diverse.</p> <p>&#160;</p> <p>la cifratura <strong>chiave simmetrica</strong> utilizza una <strong>singola chiave</strong>, la quale viene utilizzata sia per <strong>cifrare</strong> che per <strong>decifrare </strong>un messaggio;</p> <p>il principale svantaggio di questa categoria di cifrari &#232; la necessit&#224; di <strong>recapitare la chiave </strong>al destinatario o ai destinatari, il che rende il metodo imperfetto, esponendo il sistema pericoli durante le operazioni di trasferimento, fisico o via rete, della chiave.</p> <p>&#160;</p> <p>la cifratura <strong>chiave asimmetrica</strong> utilizza una <strong>coppia di chiavi</strong>, una <strong>pubblica</strong> ed una <strong>privata</strong>, correlate matematicamente tra loro in modo tale che solo l&#8217;altra chiave della coppia rispetto quella utilizzata per criptare, possa poi decriptare il messaggio;</p> <p>la caratteristica fondamentale &#232; la necessit&#224; di utilizzare le chiavi in coppia, garantendo diversi livelli di sicurezza in base agli algoritmi utilizzati o allo scopo che si desidera ottenere.</p> <p>&#160;</p> <p>la cifratura chiave asimmetrica permette di implementare una certa sicurezza per entrambe le parti:</p> <p>&#160;</p> <ul> <li><strong>garanzia del mittente</strong> &#8211; la cifratura "in uscita" avviene con la chiave privata del mittente garantendone la provenienza, permettendo per&#242; chiunque intercetti il messaggio di <strong>decifrarlo</strong> grazie alla chiave pubblica del mittente.</li> </ul> <p>&#160;</p> <ul> <li><strong>garanzia del destinatario </strong>&#8211; la cifratura "in uscita" avviene con la chiave pubblica del destinatario, il quale diviene l&#8217;unico in grado di interpretare il messaggio, che per&#242; potrebbe provenire da un dispositivo <strong>camuffato</strong>, le cui caratteristiche descrittive sono state alterate.</li> </ul> <p>&#160;</p> <ul> <li><strong>garanzia bilaterale</strong> &#8211; la cifratura "in uscita" avviene prima con la chiave privata del mittente, poi con la chiave pubblica del destinatario, permettendo solo quest'ultimo di poter accedere al livello pi&#249; interno della cifratura, protetto dalla chiave privata del mittente.</li> </ul> <p>&#160;</p> <p>&#160;</p> <h3><a name="_toc421990137"></a>2.4)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; utilizzo particolare della cifratura chiave asimmetrica: la firma digitale</h3> <p>&#160;</p> <p>un particolare utilizzo della chiave asimmetrica si concretizza con la "<strong>firma digitale</strong>" che consiste nella creazione di un "<strong>impronta</strong>" di un messaggio tramite l'<strong>algoritmo di hash</strong>, il cui risultato &#232; una sequenza di bit che rappresenta univocamente il documento, e proprio l'impronta viene criptata con chiave privata del mittene "in uscita" per garantire l'identit&#224; dello stesso, nonostante non sia quindi garantita la segretezza del messaggio;</p> <p>il motivo per cui viene criptata l&#8217;impronta e non l&#8217;intero messaggio &#232; la difficolt&#224; computazionale nel cifrare messaggi molto lunghi, quali richiederebbero tempistiche estremamente elevate.</p> <p>&#160;</p> <p>una volta giunti destinazione il messaggio "in chiaro" e l'impronta criptata, viene nuovamente creata un impronta del messaggio dal destinatario, tramite il medesimo algoritmo di hash;</p> <p>l'ultimo passaggio nell&#8217;autenticazione tramite firma digitale consiste nel <strong>decriptare l'impronta allegata</strong> al messaggio e <strong>confrontarla</strong> con <strong>l'impronta ottenuta</strong> dal destinatario.</p> <p>&#160;</p> <p>se l&#8217;impronta allegata al messaggio risulta diversa dall&#8217;impronta creata dal destinatario, allora il messaggio &#232; stato <strong>modificato</strong> &#8220;<strong>in transito</strong>&#8221;, e non &#232; pi&#249; lo stesso inviato dal mittente;</p> <p>&#160;</p> <p>da notare come l&#8217;procedimento venga seguito automaticamente da un software, senza che sia necessaria l&#8217;interazione dell&#8217;utente.</p> <p>-: cleaned :-</p>', 1)") 

i have't changed maxchars because 1 of things do, won't if site doesen't work, eventhough appreciated input.

can use string = server.htmlencode(string) instead of replace?

can show query data? before going execute conn.execute ? using following way

response.write "your query" response.end 

few more suggestion

  1. in html control maximum size of text input

instead

<input type="text" name="txttitle" placeholder="titolo"> 

write

<input type="text" name="txttitle" placeholder="titolo" maxlength="255"> 
  1. and in asp code control maximum size

instead

titolo = request.form("txttitle") 

use

titolo = left(server.htmlencode(request.form("txttitle")), 255) 

thanks posting sql query. have issue char ' (char #39). use testoslash = replace(testoslash, "'", "&#39")


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -