apache+php
用ajax,就要用js脚本调用php页面,js脚本就上就会出现那些动态页面的路径,太不安全了。我如果设置apache的Options - Indexes 禁止访问存放js,php脚本的目录的话,当我的程序需要访问这些脚本时也就禁止访问了,程序就运行不了。请问有什么好办法吗?
用ajax,就要用js脚本调用php页面,js脚本就上就会出现那些动态页面的路径,太不安全了。我如果设置apache的Options - Indexes 禁止访问存放js,php脚本的目录的话,当我的程序需要访问这些脚本时也就禁止访问了,程序就运行不了。请问有什么好办法吗?
动态路径本身就是公开的内容,
如果真的有安全隐患也跟Ajax无关。纯粹属于你网站程序的设计问题。
我曾用ajax封装一些方法实现简单操作数据库都不担心安全问题,暗箱操作即可
你所谓的路径可能是url吧
再说了URL公不公开跟AJAX没有关系吧
xmlHttpReq.open()的时候会出现url吧。这个url就是php文件,这个文件会返回我需要的一段html代码的字符串。
如果别人看到了url,直接在浏览器中输入地址浏览该php文件,网页肯定会乱到,因为这段html是局部的html代码。这样说大家应该了解了吧,我的意思就是让这个目录禁止浏览者访问,但是呢,正如我上面所说的,禁止了之后我的程序也访问不了了。我想问有什么办法。
我看到他们的路径,然后输入。就会出现两种情况
1.因为动态页的参数中有唯一id,所以就会跳到唯一id指定的页面(正常的完整的网页,而不是那个php的局部页面)
2.直接禁止你访问,说没有权限。
简单的你可以用post方法,请求的页面做处理,该跳转跳转,或者返回403都可以
或者强制要求包含XMLHttpRequest的hearder 的请求
等等...
这样做没有太大意义,这也不涉及安全问题:
1、普通用户不会调试你的ajax页面;
2、盯上你的人有google种方法去请求ajax请求的页面,firefox就能办到
严格的说,你说的问题还根本不是安全问题……给你几个建议吧:1. ajax本身就是一个连接客户端和服务器端的技术。在客户端,用户浏览你的HTML、CSS、JS都是合理、合法的,你也没有办法阻止;
2. 至于你提到的那个被ajax调用的PHP后台,我只能建议你不要返回敏感信息。一个最简单的例子是判断用户密码是否正确。那么应该返回经由比较后的true或false,而不要傻到直接返回数据库中保存的正确密码;
3. 我使用的Symfony框架中有一个isXmlHttpRequest函数,可以判断调用来自正常的页面浏览,还是来自ajax的异步调用。我没有深入去看这个函数的实现,但是我相信你应该可以找到这样的函数。所以你可以在那个页面判断一下:如果是异步调用,OK,正常处理返回;如果不是,那么你重定向到404也好,500也好就随便你了。======最后说一句,分数实在太少……