2014-03-24 30 views
0

我开发了一个Android应用程序。这个应用程序使用HttpClient和HttpPost类将数据发送到我的web服务器(apache + mysql)。Android和Apache以安全的方式

但是这样一个恶意的攻击者可以发送一个自定义的post请求到web服务器并破坏我的数据库。

1 - 有可能在应用程序发送数据之前加密数据,然后用一些共享密钥算法在网络服务器中解密数据?还是我说胡话?

2 - 如果以前的解决方案不是一个好的解决方案,我需要以总结的方式实现ssl解决方案?

我读过很多关于ssl和android的文章,但我仍然有点困惑。我想我必须在应用程序和apache上进行代码更改。任何人都可以告诉我一些教程来处理这个问题吗?

+0

SSL不会保护您免受数据库攻击。您的服务器**必须**验证发送给它的所有内容,并拒绝任何不喜欢的内容。 – 2014-03-24 22:48:17

回答

1

您不一定需要加密您的数据(仅当您希望阻止攻击者读取数据时才需要)。

你需要的是:

  1. 认证:(即您的应用程序)从受信任的用户因此,只有请求被接受
  2. 验证:因此,只有“正确”的请求被处理

认证可以像在您的Apache服务器上设置HTTP Basic Access Authentication一样简单。您将设置用户和密码,并让您的应用程序使用这些凭据访问服务器。任何未经身份验证的请求将被拒绝,并提供403

不幸的是基本身份验证主要是不安全的,因为任何查看您的应用程序和服务器之间的流量的人都可以获取凭证,然后伪造自己的请求。

OAuth将是更好的选择,虽然它更多地涉及。这里有一个很好的教程,涵盖了客户端:http://nilvec.com/implementing-client-side-oauth-on-android.html

验证意味着你需要在使用它之前对数据进行清理。您的服务器应用程序应该假设所有数据都有可能是错误或危险的,并在处理之前正确地过滤所有输入。