安全地将敏感数据从PHP传递到javascript

时间:2015-09-18 21:47:26

标签: javascript php

我的方案看起来像这样,我在屏幕上显示数据库分页网格。 我想添加一个按钮来下载CSV电子表格。 所以我编写了这样的代码:



$(function(){
	
	var  file_complete = false;
	var  final_sql = $('.initiate_download').val();
	var  orderby = $('#search_submit').data('orderby');

	 
	var	 $posturl = $url + "index.php/Spawner/launch_spawner";		
 

	$('#downloadModal').modal('hide');
		
	$('.initiate_download').on("click", function(e) {
		e.preventDefault();
		
		$('#pleaseWait').html($html);
		
		setTimeout(function() {
			$.ajax({							// initiate download
				url:  $posturl,
				type: "POST",
				data: {
					final_sql: final_sql,
					orderby: orderby,
					report: $report 
						},
				success: function(data) {
					var download_id = data;
					// console.log(download_id);
					check_download_status(download_id);
				}
			})
		}, 2000);
	})
});

	<div class="row top-buffer">   
		
		  <button id="search_submit" class="btn btn-primary initiate_download" type="submit" value="<?php echo $sql; ?>"    data-orderby="<?php echo $orderby;?>"  name="final_sql_lic" >Download List</button>
	
	      <span id="pleaseWait">  </span>        
		
		</div>
&#13;
&#13;
&#13;

它工作正常,但问题是你可以用视图页面选项查看SQL,有没有办法解决它?

1 个答案:

答案 0 :(得分:2)

大多数人所做的是他们没有在页面上嵌入SQL,而是公开处理幕后SQL内容的URL。

在您的示例中,您可以创建如下页面: http://website.com/api/csv?select=col1,col2,col3&orderBy=someColumn&where=someCondition

然后你的php将获取这些参数并根据这些参数生成sql并运行查询。确保安全地处理输入以避免SQL注入(请参阅http://bobby-tables.com/php.html)。

当前场景的问题在于,查看源代码的人会明白地看到您将SQL直接传递到服务器,这意味着他们可以生成自己的SQL,如:DROP TABLE table1, table2;或更糟。