几天前,当我设法通过HTML
向php
数据库提交数据的SQL
表格时,我开始考虑这个问题。我解决了我的问题,但我在这里问一个计算机理论问题,这可能会对我(或其他人)将来有所帮助。
我想保护自己免受SQL-injection的攻击,我认为不是通过服务器端php
验证数据,而是让javascript验证客户端的数据(I在JS中比在PHP中更流畅,然后发送它。
但是,复杂的用户可能会检查javascript(或HTTPrequest
)然后更改它以将自己的恶意请求发送到服务器。
我的问题:
理论上可以在clinet方面进行计算,代码对他来说是,并以某种方式发送它以确保数据是从我的程序发送的而不是来自改变的代码?
这可以通过带公钥和私钥的RSA方案来完成吗?
答案 0 :(得分:1)
我想保护自己免受SQL注入,我认为这不是验证数据
不要验证数据以保护自己免受SQL注入。验证数据以确保其格式符合您的要求。
转义数据以保护自己免受SQL注入(并逃脱via prepared statements and parameterized queries)。
理论上是否可以在clinet端进行计算,代码对他来说是可见的,并以某种方式发送,以确保数据是从我的程序发送的,而不是从更改的代码发送的?
没有。客户端代码可以完全绕过。在这个领域,只有快速告诉用户如果将数据提交给服务器,他们的数据将被拒绝。
这可以通过带公钥和私钥的RSA方案来完成吗?
没有。您必须将其中一个密钥提供给客户端。然后可以独立于代码提取和使用它。