The alias of the article address can be listed externally, where should the list interface receive it?
When the alias of the article address can be enumerated externally, where should the list interface be collected? The intake should be on the interface side rather than the page side: Looking at a single alias address does not constitute a risk; the risk comes from the fact that both 'the alias can be guessed according to a regular pattern' and 'the list interface allows bulk pagination' are true at the same time. In this round of security fixes, WordPress lists 'An enumeration of post slugs' as an independent issue, and the direction of handling is to limit the list of content that can be obtained through batch requests.
What conditions are needed for enumeration?
The first is identifiable by guess. If the address alias is generated by a fixed rule or with a serial number, the external party can deduce the remaining space from a few samples. The second is batch retrieval. If the list-style interface allows a single request to return a large number of entries, or the pagination depth is unlimited, the result of the guess can be quickly verified. The third is that the state is not distinguished. When drafts and pending publications and formal documents share the same data retrieval logic for unclosed content, the gains of the inventory are not just public content.
It should be noted that enumeration itself generally does not involve credential leakage, its output is a content list: title, category, alias path, and sometimes includes abstract and time. For sites mainly based on content assets, the value of this list is not low.
Is the enumeration a list or credentials?
Look at the two layers exposed. The list of public content is within the tolerable range, and the site map itself is an actively handed out directory; what truly needs to be prevented is the bulk listing of the unpublic part, as well as the internal remarks included in the附属 data of comments. This round of repair list also appears to have a problem with the internal description of the comment subscription source being leaked, with the common point of the two types of issues being that 'the fields that should not appear in the external response have appeared'.
The three closures on the interface side
The first is pagination and frequency. Set an upper limit for the scale of a single return, and differentiate the depth of pagination according to the purpose of the interface: external search interfaces and background management interfaces do not need to be the same. For high-frequency capabilities such as document lists and details, categories and tags, messages and comments, friendship links, and system settings, the return fields should be confirmed one by one according to the interface documentation to avoid bringing background fields into the results of public API calls.
The second is the domain and exposure range. AnQiCMS's MCP interface sets the exposure range for external access according to the intent domain, and operations such as backup, upgrade, and multi-site that are high-risk at the whole-site level are marked as DefaultOff in the source code by default and need to be explicitly enabled. The same logic applies to external interfaces: the ability to list all documents and the ability to list only the current category should not be placed in the same default slot.
The three is the access口径。The entry for reading unclosed content should verify the status instead of just checking if the alias exists, the distinction between returning 'not found' and 'no permission' should be clear to developers externally, but should not leak the existence of content in terms of information volume.
Which configuration inside the station is related to this?
The link push and sitemap determine which addresses are actively disclosed, this part should be kept within a controllable range; the fields promised in the interface document should be consistent with the actual return. The JWT authentication on the login side is responsible for access identity and cannot make the judgment of whether to return this item, and the two should be checked separately.
What if we change the alias to a random string is enough?It's not enough. Aliasing randomization increases the cost of guessing, but if the list interface can still return a large amount of data, the enumeration will change from 'guessing' to 'directly taking'.
Will throttling affect normal collection and search engines?The configurations that are likely to be affected are usually too frequent. The entry points of search engines and the paths of sitemaps should be released according to the purpose, and the restricted objects should be placed on the data acquisition interfaces of batch pagination.
How can we judge if there is this problem with our own site's interface?Answer: Compare the number of returned items from a normal request and a request with amplified pagination depth, and then check if the response contains any content in an unpublic status.