2017-10-15 2 views
-1

나는 포럼으로 명명 된 데이터베이스에 연결된 간단한 포스트 앱을 작성했습니다. 내 코드는 아래와 같습니다.어떻게 Python 표백제 라이브러리를 사용하여 스크립트 주입을 피할 수 있습니까?

# "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) 

이 코드에서 표백제 라이브러리를 사용하고 싶습니다. 하지만 어떻게해야할지 모르겠다. 이미 표백제 라이브러리를 가져 왔습니다. 미리 감사드립니다.

text = bleach.clean(str(message)) 

그리고 그에 따라 실행 기능을 조정 :

+0

당신이 묻는 것이 명확하지 않습니다. 귀하의 질문에 '어떻게 표백제 라이브러리를 사용합니까?'라는 메시지가 현재 형태로는 너무 광범위하고 불특명합니다. [ask]와 [help/on-topic]을보십시오 – pvg

+0

표백제는 출력 레이어와 관련이 있으며 여기의 메서드 중 어느 것도 실제로 아무 것도 출력하지 않습니다. – MatsLindh

답변

0

당신은 당신의 add_post 방법에 다음 줄을 추가해야

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

그래서 전체 add_post 방법은 다음과 같습니다

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()