2017-10-15 2 views
-1

Ich schrieb eine einfache Post App, die mit einer Datenbank namens Forum verbunden ist. Mein Code ist unten angegeben.Wie kann ich die Python-Bleichbibliothek verwenden, um die Skript-Injektion zu vermeiden?

# "Database code" for the DB Forum. 

import datetime, psycopg2, bleach 


POSTS = [("This is the first post.", datetime.datetime.now())] 

def add_post(message): 
    ''' This function insert post into the database ''' 
    db = psycopg2.connect(dbname = 'forum') 
    c = db.cursor() 
    c.execute("insert into posts values (%s)", (message,)) 
    db.commit() 
    db.close() 

def get_posts(): 
    '''Take the posts from the databse ''' 
    db = psycopg2.connect(dbname = 'forum') 
    c = db.cursor() 
    c.execute("select content, time from posts order by time") 
    result = c.fetchall() 
    POSTS.extend(result) 
    db.close() 
    return reversed(POSTS) 

Ich möchte Bleichmittelbibliothek in diesem Code verwenden. Aber ich weiß nicht wie. Ich importiere bereits eine Bleichbibliothek. Danke im Voraus.

+0

Es ist nicht klar, was Sie fragen. Wenn Ihre Frage lautet: "Wie verwende ich die Bleichmittelbibliothek?" Ist sie wahrscheinlich zu breit und unspezifisch für [SO] in ihrer aktuellen Form. Sehen Sie sich [ask] und [help/on-topic] an. – pvg

+0

Bleichen ist in der Ausgabeschicht relevant, und keine Ihrer Methoden gibt hier tatsächlich etwas aus. – MatsLindh

Antwort

0

Sie haben die folgende Zeile in der add_post Methode hinzufügen:

text = bleach.clean(str(message)) 

Und dann die Funktion entsprechend ausführen einstellen:

c.execute("insert into posts values (%s)", (text,)) 

So ist die komplette add_post Methode sieht wie folgt aus:

def add_post(message): 
    ''' This function insert post into the database ''' 
    db = psycopg2.connect(dbname = 'forum') 
    c = db.cursor() 
    text = bleach.clean(str(message)) 
    c.execute("insert into posts values (%s)", (text,)) 
    db.commit() 
    db.close() 
Verwandte Themen