MySQLのインジェクションの問題

実質ベースで1、

MySQLの文は、ユーザースプライス文字列です

2、例えば

インポートpymysqlの
 #は、ユーザの入力情報を取得 
ユーザ名は= INPUT(" ユーザー名を入力してください:" 
PWD = INPUTは(" あなたのパスワードを入力してください:" データベースに接続 
CONN = pymysql.connect(
    ホスト = ' localhostの' 
    ポート = 3306 
    ユーザ = ' ルート' 
    パスワード = ' @ WSX3edc ' 
    データベース = ' のUserInfo ' 
    文字セット =' UTF8 ' 
取得カーソル 
カーソル= conn.cursor()
SQL = " 名= '%のS'とパスワード= '%S'がからの情報WHERE SELECT *; "(ユーザー名、PWD)
声明のMySQLの実行
印刷を(SQL )
RET = cursor.execute(SQL)
 IF RET:
     印刷" 成功したログイン!" それ以外印刷" ログインに失敗しました!" #は、カーソルのクローズ
()cursor.closeを
 #は、接続のクローズ 
(はconn.closeを)

インジェクション声明

入力文
ロッセル' または1 = 1#。。
出力SQL文
SELECT * からの情報WHERE名= ' ロッセル'  または 1 = 1。。 'とパスワード= ''; 
注:私はpycharmは、MySQL、ノート内のSQLステートメントpycharmを接続し使用しますです:あなたがpycharmにより、データベースへの接続が、直接pymysqlのコメントを経由して接続されていない場合は、次のようになります。 - 
SELECT *はから情報名= WHERE ロッセル または = 1 1 
1 = 1が真の文のことはありません
 「とパスワード=」 ' ;

pymysqlによって>文字スプライスモジュール - 問題の注入を解決するために3、

インポートpymysqlの
 #は、ユーザの入力情報を取得 
ユーザ名は= INPUT(ユーザー名を入力してください:
パスワード = INPUTは(あなたのパスワードを入力してください:データベースに接続 
CONN = pymysql.connect(
    ホスト = localhostの
    ポート = 3306 
    ユーザ = ' ルート' 
    パスワード = ' @ WSX3edc ' 
    データベース = ' のUserInfo ' 
    文字セット =' UTF8 ' 
取得カーソル 
カーソル= conn.cursor()
SQL文の 
SQL = ' * WHERE名とパスワードの情報=%S =%S SELECT; ' 
pymysqlのことで実行されたSQL文のSQL文スプライシング実行 
RETを= カーソル.execute(SQL、[ユーザー名、パスワード])
 IF RET:
     印刷" 成功したログイン!" それ以外印刷" ログインに失敗しました!" #は、カーソルのクローズ
(cursor.closeを)
 #は接続クローズ 
(はconn.closeを)

 

おすすめ

転載: www.cnblogs.com/wt7018/p/11210514.html