2011-10-26 120 views
0

所以我有一个脚本(PHP编写的),该职位的参考号码和邮政编码的用户输入,然后将用户重定向到一个页面的URL参数,像这样:重写URL参数

http://mydomain.com/data.php?reference=REF1234&postcode=LE1FEH

的data.php脚本然后从数据库中根据URL参数获取数据,现在我想隐藏从用户的观点的PARAMATERS - 既要防止SQL注入和使URL更简单。我不想直接在URL中隐藏输入的数据。苹果似乎是我能找到谁做到像现在此问题的唯一的地方 - 在他们的网址,你可以看到一个订单号码和邮政编码,但没有等号或任何东西,就像这样:

https://store.apple.com/uk/order/guest/ordernumber/postcode

有没有办法去做这件事?我不确定你是否会将它作为加密或不加密的对象,所以我很难找到任何有用的文章以及它的写法 - 所以我很抱歉,如果它是一个小的混淆)

+3

URL重写。搜索这个词,你会立即找到你需要的。 – bdares

+0

@ user1013930:此外,您可以将表单设置为method =“POST”以从用户中“隐藏”URL,但任何使用FireBug的人都可以编辑HTML并向您发送注入有效内容。无论你做什么,你的唯一选择是清理用户的输入。期。不要相信他们! – Josh

+0

表单的方法实际上是POST,但是我将用户从表单发送到页面,如下所示:header('Location:data.php?reference ='。$ reference'&postcode ='。$ postcode);所以当你说它隐藏了URL时,我不明白你的意思吗? –

回答

0

您需要使用.htaccessmod_rewrite来做到这一点。但请记住,它与SQL注入一样容易受到“普通”URL的影响,并且在最小的错误时更容易出现内部服务器错误。就我个人而言,我会建议不要这种方法,除非用户可能希望轻松共享URL,但无论您选择做什么,都要确保始终防止注入。

+0

请注意,这是Apache特定的。其他Web服务器通常有URL重写选项。另外,你不需要使用'.htaccess'。事实上,在您的服务器配置中放置重写规则更加可取 – Phil