【发布时间】:2023-03-11 06:46:02
【问题描述】:
在任何人遇到安全问题之前,请不要打扰。
假设我有一个index.php。
在这个页面上有很多指向“home.php”的链接,但是它们都有不同的数据存储在href 属性中。例如:
链接 1:'home.php?data=1&country=uk'
链接 2:'home.php?data=95&country=us'
用户只需输入www.website.com/home.php?data=*&country=* 并根据自己的喜好在 URL 中填写数据即可。
我在想的是,如果我有一个在单击其中一个链接时运行的函数,它会在到达目的地之前为 URL 添加一个值。例如:
原文链接:www.website.com/home.php?data=1&country=uk
点击链接:www.website.com/home.php?data=1&country=uk&verify=a8c9gj113
我无法解决的是如何在单击链接时更改 HTML 中的 href 数据,然后再实际前往目的地。
我的代码在下面(HTML 处于从数据库中提取数据的 while 循环中)
<a href='home.php?data=". $results['id'] ."&country=". $results['country'] .' onclick='return verify();'>
功能:
function verify()
{
document.getElementById("verify").href="";
return true;
}
所以对于函数中的 HREF 值,我将放置原始 URL (home.php?data=". $results['id'] ."&country=". $results['country'] .) 加上一个额外的值。我该怎么做?
在 PHP 回显中,当您从变量等中添加值时,您只需用引号结束回显,然后添加点,如下所示:
echo "I am the". $whatami ."person in the world";
JavaScript 有类似的东西吗?当我将该 PHP URL 粘贴到 .href="" 的 JavaScript 函数中时,它会失败,因为我要关闭引号。
我希望人们明白我在说什么。
如果有更好的方法,请告诉我。
【问题讨论】:
-
退房:stackoverflow.com/questions/4145531/… 也许你可以从那里得到想法
-
如果您担心用户会更改输入,那么只提供他们允许更改的输入(并在下一页加载/计算其余部分) .例如,
home.php?country=uk然后在 home.php 中,按国家代码从数据库中加载数据。 -
另外,这本质上是一个安全问题; 不提及安全性的唯一方法是根本不回答。换句话说,是什么阻止我启动开发者工具(截至 2016 年,直接内置于所有主流浏览器中)、更改 HREF 以及 然后 在更改后的属性上调用 verify()?没有什么能阻止这一点,这使得 JS 端验证只对最不成熟的攻击者有用。
-
Piskvor,我不知道为什么我没有想到这一点。我想我们有时都会遇到“编码员”障碍,嗯,干杯!另外,“不提及安全问题”是为了让人们不要抱怨我使用不安全的方法 lmao。
标签: javascript php html security