2017-06-05 37 views
1

我有一個小問題,

對於爲例,我最後一次使用MySQL和現在PDO,所以這是我的問題:

當用戶想發佈在我的網站留言與MySQL,如果他試圖張貼像<div class="HAHAHA">這樣的東西它不起作用,或者它會顯示:From USER, Message => <div class="HAHAHA">

但現在與PDO,當用戶發佈像HTML一樣,將在我的網站上工作。 (我不知道這是否是一種感覺)。

我的一段代碼:

<?php $contenu = nl2br($_POST['contenu']); 

$sql_add_pub = $pdo->prepare("INSERT INTO publications (steamid,profile,contenu,ajout,ip) VALUES ('".$user['steamid']."','".$user['steamid']."', :contenu , '".time()."', '".$_SERVER['REMOTE_ADDR']."') "); 
     $sql_add_pub->execute(Array("contenu" => $contenu)); ?> 

所以我的問題是,我怎麼能解決這個問題有PDO?

在此先感謝。

+0

**警告**:使用PDO時,您應該使用帶有佔位符值的[prepared statements](http://php.net/manual/en/pdo.prepared-statements.php),並將任何用戶數據作爲單獨的論點。在此代碼中,您可能會遇到嚴重的[SQL注入漏洞](http://bobby-tables.com/)。切勿使用字符串插值或連接,而應使用[準備語句](http://php.net/manual/en/pdo.prepared-statements.php),並且絕對不要將'$ _POST'或'$ _GET'數據直接放入您的查詢。有關此問題和其他問題的指導,請參閱[PHP正確方法](http://www.phptherightway.com/)。 – tadman

回答

-2

一開始從未在查詢字符串中使用用戶輸入。使用預先準備的語句。這將有助於防止SQL注入。

其次在用戶輸入中使用PHP strip_tags函數。 http://php.net/manual/en/function.strip-tags.php

這會阻止人們注入HTML。

+1

非常感謝你,我確實需要並且現在完美地工作。 我要爲用戶使用Prepared語句,就像你告訴我的一樣:) –

+3

不要隨意使用'strip_tags'。準備好的聲明將負責注射。在顯示內容時需要使用'htmlspecialchars()'來避免XSS問題。 – tadman

+0

你是什麼意思,不要任意使用strip_tags?這當然不是你應該做的唯一的事情。這是可以提高用戶輸入的安全性的許多事情之一。 –