【发布时间】:2009-05-05 12:20:41
【问题描述】:
我正在从以下 php 代码生成链接。链接出现在浏览器中,生成的 html 代码看起来不错,但是链接不可点击。我在 IE 和 FF 中对此进行了测试,并尝试使用 FireBug 进行查看,但无济于事。
生成表单的代码
$uploadhtml = htmlspecialchars(json_encode("<form action='up.php' method='post'
enctype='multipart/form-data'>
<label for='file'>Filename:</label>
<input type='file' name='file' id='file'/>
<br />
<input type='hidden' name='pk' value='".$pk."'>
<input type='hidden' name='username' value='".$USERNAME."'>
<input type='submit' name='submit' value='Submit' onclick=\"setTimeout(function() {
updateByPk('Layer2', '".$pk."', '".$brand."', '".$pg."'); } ),1250);\" />
</form>"), ENT_QUOTES);
生成的html代码:
<a onclick="makewindows('"<form action='up.php' method='
post'\r\nenctype='multipart\/form-data'>\r\n<label for='
`file'>Filename:<\/label>\r\n<input type='file' name='file' id='`file'\/> \r\n<br \/>\r\n<input type='hidden' name='pk' value='
380118179930'>\r\n<input type='hidden' name='username' value='
janmaybach'>\r\n<input type='submit' name='submit' value='
Submit' onclick=\"setTimeout(function() { updateByPk('Layer2',
'380118179930', 'Ed Hardy', '1'); } ),1250);\"
\/>\r\n<\/form>"'); return false;" href="#">Upload files</a>
我猜是 JavaScript 错误,但我不知道如何定位?
编辑:没有 ENT_QUOTES 的 html 代码:
<a href="#" onclick="makewindows('"<form action='up.php' method='post'\r
\nenctype='multipart\/form-data'>\r\n<label for='file'>Filename:<\/label>\r\n<input
type='file' name='file' id='file'\/> \r\n<br \/>\r\n<input type='hidden' name='pk'
value='380118185183'>\r\n<input type='hidden' name='username' value='janmaybach'>\r
\n<input type='submit' name='submit' value='Submit' onclick=\"setTimeout(function()
{ updateByPk('Layer2', '380118185183', 'Ed Hardy', '1'); } ),1250);\"
\/>\r\n<\/form>"'); return false;">Upload files</a>
它仍然无法点击...,一切似乎都被正确引用了?
当我尝试不使用 htmlspecial 字符时,会产生以下 html 输出:
<input type='submit' name='submit' value='Submit' onclick=" settimeout(function()="" {="" updatebypk(="" layer2="" 380118179930="" ed="" hardy="" ,="" 1="" );="" }="" ),1250);="">
'); return false;">Upload files</a>
【问题讨论】:
-
Paolo:如果我是一个愿意使用 XSS 的破解者,我会爱上他 :)
-
@paulo:为什么我的代码这么难看,我能做些什么让它变得更好? @guerda:您如何认为我的代码不安全?一切都经过消毒......
-
@josh:为什么 HTML 或者至少生成它的脚本没有在页面的其他地方?那么你的锚唯一要做的就是调用一个函数,可能用几个字符串来指示要生成什么样的预设。
-
html 将在一个弹出窗口中启动,我将它放在一个变量中,这样我就可以将它传递给我的函数来创建一个弹出窗口。
标签: php javascript