安全锚标记链接

时间:2018-01-27 07:05:13

标签: php

下面的代码中href='example.php?id="<?= $row['id'] ?>"'是否安全? 如果没有,你能告诉我为什么以及如何使其安全吗?

<a class='btn btn-sm' href='example.php?id="<?= $row['id'] ?>"' role='button' data-toggle='modal' data-target='.bs-example-modal-lg'>View</a>

编辑:

这就是为什么上面的问题在我脑海中引发的原因。我在鼠标悬停时只看到了浏览器底部的数据库ID!

enter image description here

2 个答案:

答案 0 :(得分:1)

在你的代码中有任何重要的错误,但我认为短标记已激活,但更好的是你在这里使用完整标记:

CREATE PROCEDURE [dbo].[SetUserId]
    @userId INT
AS
BEGIN
    SET NOCOUNT ON;

    EXEC sp_set_session_context 'UserId', @userId; 
END

这是更好的选择,并且必须通过id加载示例的重要服务器端代码易受攻击。

答案 1 :(得分:0)

无需引号,您需要删除它们:

<a class='btn btn-sm' href='example.php?id=<?= $row['id'] ?>' role='button' data-toggle='modal' data-target='.bs-example-modal-lg'>View</a>

最好使用PHP sprintf或类似的东西来提高可读性:

echo sprintf("<a class='btn btn-sm' href='example.php?id=%d' role='button' data-toggle='modal' data-target='.bs-example-modal-lg'>View</a>",
$row['id']
);

%d - 说它是一个整数。