在一个页面中有多行记录(信息)。
用户可以点击每行末尾的链接。打开新页面(弹出窗口),如host/pageaddress.php?id=777
777
是mysql行的id。在新页面中,我显示以id 777在mysql中记录的信息。
如果用户想要,他可以将777更改为任何其他数字并显示相应的mysql行。以这种方式修改id,用户只能访问允许用户访问的表和行。目前我不知道任何安全漏洞,因为这样的修改(如果有人知道,请写,)。
但我不想让用户进行这样的修改(感觉不舒服)。搜索时我发现信息,我无法阻止用户修改。但是知道一个网站,我无法修改网址
试图在地址栏中写点什么,我不能。我不知道为什么(也许是因为https?)
所以现在想想以下解决方案。
在主页面上创建$_SESSION['display'] = 'something';
在新的弹出页面中
if(isset($_SESSION['display'])){
echo ' content';
}
然后在页面unset($_SESSION['display']);
因此,如果用户修改了网址,页面重新加载并且未设置$_SESSION['display']
。所以没有内容。
请提供建议,如果这样的解决方案没问题?一些更好的解决方案?
更新 上述解决方案似乎毫无用处。但如果要考虑解决方案,可以在这里互相思考:
1)在主页面上创建哈希,并命名为$hash
2)$_SESSION['display'] = $hash;
3)在mysql中记录$hash
4)在新的弹出窗口(文件)中检查`$ _SESSION ['display']'是否存在并且等于mysql中的hash。在页面末尾unset hash并从mysql中删除
这只是考虑可能的解决方案......它有用吗?
答案 0 :(得分:4)
如果用户需要,他可以将777更改为任何其他号码
是。绝对无法控制用户指示浏览器向服务器询问的内容。
并显示相应的mysql行。
如果您只想让某些行可供用户使用,请对该用户进行身份验证,并检查他们是否有权查看该行。
例如,一些pesudo代码:
if user is not logged in
provide login page
else
if user id matches row's owner id field
provide data
else
provide error message
但是知道一个网站,我无法修改网址
当您打开弹出窗口并告诉它不显示工具栏时会发生这种情况。它不提供任何安全性,因为用户仍然可以将URL复制到新窗口并根据需要进行修改。
因此,如果用户修改了网址,页面重新加载并且没有设置$ _SESSION ['display']
这只是意味着他们必须在访问主页面和点击弹出窗口的时间之间将URL复制到新窗口。
这很麻烦,但很不安全。