如何防止用户生成的查询字符串进行处理

时间:2013-09-20 03:20:03

标签: php mysql query-string sql-injection

我正在使用基于MySQL的PHP​​应用程序,其中使用GET请求完成对前端服务器端代码的一些请求。 在服务器端,我使用$_GET[variable] ..

获取这些值

我用它的典型网址:

http://localhost/mysite/processdata.php?variable='somedata'

表示生成上述URL并在用户执行操作时将其发送到服务器。但是用户总是可以更改URL中的查询字符串。 是否有一种机制来查找查询字符串是由应用程序还是由用户生成的?如果由用户/非授权程序生成,则阻止处理?

1 个答案:

答案 0 :(得分:0)

您永远无法判断您的应用是发送了它还是用户发送了它。但是,可以验证您的信息。例如:

$value = $_GET['variable'];
// Assuming you want the variable to be an integer
if ( preg_match( '/^\D+$/', $value ) ) {
  // Use value for what you need
}
else {
  // Show error
}

但是你不应该重新发明轮子。有许多库都带有该功能标准。 CodeIgniter就是一个例子。 Zend是另一个。我更喜欢CI,但你应该看一看并自己决定。无论哪种方式,它始终归结为验证。