2013-11-01 32 views
0

在我的Java代碼中,我有這樣的事情:傳遞SQL語句到PHP服務器POST

nameValuePairs.add(new BasicNameValuePair("sql", "INSERT INTO 
`TABLE_NAME` (`id` , ,`description`)VALUES (NULL , 'some text')")); 

但是,當串到達服務器,它是這樣的:

$sql = $_POST['sql']; 

$sql包含:

INSERT INTO `TABLE_NAME` (`id` , ,`description`)VALUES (NULL , 
\'some text\') 

的事情是我想要的SQL語句傳遞給我的PHP服務器並執行他們的服務器上 是這樣的:

mysql_query($sql,$con); 

我想我可以發送SQL語句到服務器,然後解析響應。但是我想要的SQL語句將被構建在Java應用程序中。

應該怎麼做?

這是否足夠保護?

if(isset($_GET['phpusername']) && ($_GET['phpusername'] == "user")) 
{ 
if(isset($_GET['phppassword']) && ($_GET['phppassword'] == "pass")) { 
       `//do some execution of raw sql query` 
     } } 
+12

這是一個** BAAAAADDDD **的想法..考慮某人的情況搞清楚你的​​HTTP請求結構並傳入'sql = DROP TABLE students;'。永遠不會傳遞客戶端/服務器之間的原始sql。傳遞單獨的數據位,例如一個id值,然後在服務器上構建您的查詢。 –

+0

可以給一些鏈接在哪裏應該閱讀更多關於這應該如何完成? (沒有閱讀500頁的書) – Lukap

+0

是的MarcB是對的。請認真改變你的設計** –

回答

0

如果您需要構建查詢在Java方面並不能避免這種情況,我建議你送不整查詢行,但對像TABLE_NAME =「MYTABLE」,ID = '12' ,description ='blablabla'。

例如,您可以使用JSON格式或簡單的帖子,或任何你喜歡的。你可以在java端做那一行變量,把它發送到php端,在那裏解析它,並且查詢「你的夢想」;)